>  기사  >  백엔드 개발  >  xsd를 사용하여 xml을 확인하는 코드 공유에 대한 자세한 소개

xsd를 사용하여 xml을 확인하는 코드 공유에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-23 16:55:102166검색

Xsd

DTD를 대체합니다.
XML 스키마 언어도 XSD입니다. XML 스키마XML 문서의 구조를 설명합니다.
XML 문서를 지정된 XML 스키마에 대해 유효성을 검사하여 XML문서가 요구 사항을 충족하는지 여부입니다. 문서 디자이너는 XML Schema를 통해 XML
문서가 허용하는 구조와 내용을 지정하고 그에 따라 확인할 수 있습니다.
XML 문서가 유효합니다. XML 스키마 자체는 XML 문서이며 XML 구문을 따릅니다. 구조. 은 일반 XML 파서로 파싱할 수 있습니다.
XML 스키마는 다음을 정의합니다. 문서에 나타나는 요소, 문서에 나타나는 속성, 하위 요소 , 하위 요소 요소 수, 하위 요소 순서, 요소가 비어 있는지 여부, 요소 및 속성의 데이터 유형, 요소 또는 속성의 기본값 및 고정 값입니다.

XSD 파일의 접미사는 .xsd입니다.

다음 코드 예제에서는 위의 스키마가 XmlReaderSettings 개체의 XmlSchemaSetSchemas 속성에 추가됩니다. XmlReaderSettings 개체는 위 XML 문서의 유효성을 검사하는 XmlReader 개체의 Create 메서드에 매개 변수로 전달됩니다.

XmlReaderSettings 객체의 ValidationType 속성이 Schema 로 설정되어 XmlReader 객체의 Create 메서드 검증 XML 문서. XmlReaderSettings 객체에 ValidationEventHandler 를 추가하여 XML 문서 및 스키마 유효성 검사 중에 발견된 오류로 인해 발생한 모든 경고를 처리하세요. 또는 오류 이벤트.

예:

rreee

contosoBooks.xsd

using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Xml.Serialization;
using System.Text;

public class XmlSchemaSetExample
{
    static void Main()
    {

        XmlReaderSettings booksSettings = new XmlReaderSettings();
        booksSettings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
        booksSettings.ValidationType = ValidationType.Schema;
        booksSettings.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler);

        MemoryStream ms = new MemoryStream();//定义一个数据流对象

        XmlDocument doc = new XmlDocument();

        doc.Load("contosoBooks.xml");

        doc.Save(ms);

        ms.Position = 0; //修改指针的位置

        XmlReader books = XmlReader.Create(ms,booksSettings);


        while (books.Read())
        {  }
     }

    static void booksSettingsValidationEventHandler(object sender, ValidationEventArgs e)
    {
        if (e.Severity == XmlSeverityType.Warning)
        {
            Console.Write("WARNING: ");
            Console.WriteLine(e.Message);
            Console.Read();
            
        }
        else if (e.Severity == XmlSeverityType.Error)
        {
            Console.Write("ERROR: ");
            Console.WriteLine(e.Message);
            Console.Read();
        }
    }
}


contosoBooks.xml

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attribute
For
mDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2
001
/XMLSchema">
  <xs:element name="bookstore">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="book">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="title" type="xs:=string" />
              <xs:element name="author">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="0" name="name" type="xs:string" />
                    <xs:element minOccurs="0" name="first-name" type="xs:string" />
                    <xs:element minOccurs="0" name="last-name" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="price" type="xs:decimal" />
            </xs:sequence>
            <xs:attribute name="genre" type="xs:string" use="required" />
            <xs:attribute name="publicationdate" type="xs:date" use="required" />
            <xs:attribute name="ISBN" type="xs:string" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


비고: Xsd의 다른 클래스 또는 인스턴스에 대해
StreamWriter, StreamReader, XmlSchema, XmlSchemaSet

Stream stream = new MemoryStream(); //클래스의 객체를 초기화할 수 없는 경우 해당 클래스의 inherit수업.

FileStream fs = File.Open("117.xml",FileMode.OpenOrCreate,FileAccess.ReadWrite);

TextReader tr1=new StreamReader(" 123.xml");

TextReader tr2= new StringReader("asdfsadfsdf");

위 내용은 xsd를 사용하여 xml을 확인하는 코드 공유에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.