在.NET框架具有schema object model (SOM)和有鉤訪問模式類型,同時用一個XmlReader或驗證System.Xml.XmlDocument或System.Xml.Linq.XDocument後驗證。下面是展示如何驗證System.Xml.Linq.XDocument以及如何然後訪問架構信息的樣本:
Dim doc As XDocument = XDocument.Load("..\..\XMLFile1.xml")
Dim schemaSet As New XmlSchemaSet()
schemaSet.Add(Nothing, "..\..\XMLFile1.xsd")
doc.Validate(schemaSet, Nothing, True)
For Each leafElement As XElement In doc.Descendants().Where(Function(d) Not (d.Elements().Any()))
Console.WriteLine("Element named {0} has type {1}", leafElement.Name, DirectCast(leafElement.GetSchemaInfo().SchemaType, XmlSchemaSimpleType).Datatype.TypeCode)
Next
隨着XML文件是
<?xml version="1.0" encoding="utf-8" ?>
<persons>
<person>
<last-name> Watson </last-name>
<foo>false</foo>
</person>
</persons>
和架構是
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="persons">
<xs:complexType>
<xs:sequence>
<xs:element name="person" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="last-name" type="xs:normalizedString" />
<xs:element name="foo" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
該樣本輸出
Element named last-name has type NormalizedString
Element named foo has type Boolean
因此,請瀏覽MSDN或本地VS文檔中的SOM文檔,您應該能夠以這種方式查找信息。
謝謝。我接受了另一個答案,因爲1.這使我走上了正確的道路。在我想清楚之前,我沒有看到你的答案。雖然我認爲你的回答在我的具體問題上更加完整。 – ElGringoGrande 2011-02-17 18:43:40