我很费劲地尝试解析一个模式文件,希望有人能够帮忙。
以下是xsd文件的样子。
以下是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);
}
}
这是输出
Andy ----- E1 Andy ----- E2 Andy ----- E3 Andy ----- E4 Andy ----- E5
我希望它输出到这里
Andy ----- E1 Andy ----- E2 Andy ----- E3 Andy ----- E4 Andy ----- E5 A1 A2 A3
谢谢您的帮助。