我有一段时间试图解析模式文件......希望有人能提供帮助。
这是xsd的样子
<xs:element name="E1">
<xs:complexType>
<xs:sequence>
<xs:element name="E2" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="E3" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="E4" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="E5" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="A1" type="xs:integer" use="optional" />
<xs:attribute name="A2" type="xs:string" use="optional" />
<xs:attribute name="A3" type="xs:string" use="optional" />\
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
</xs:complexType>
</xs:element>
这并不完整,但足以理解这个想法。这是我试图获取元素名称的代码,后跟任何属性(如果存在),但这仅返回元素名称。
var xs = XNamespace.Get("http://www.w3.org/2001/XMLSchema");
var doc = XDocument.Load(sourceName + sourceApi + "Input.txt");
foreach (var el in doc.Descendants(xs + "element"))
{
Trace.WriteLine("ANDY ------ " + el.Attribute("name").Value);
foreach (var attr in el.Elements(xs + "attribute"))
{
Trace.WriteLine(attr.Attribute("name").Value);
}
}
这是输出
安迪 ----- E1 安迪 ----- E2 安迪 ----- E3 安迪 ----- E4 安迪 ----- E5
我希望它在哪里输出
安迪 ----- E1 安迪 ----- E2 安迪 ----- E3 安迪 ----- E4 安迪 ----- E5 A1 A2 A3
提前致谢。