私はスキーマファイルを解析しようとしてかなりの時間を過ごしています...誰かが助けてくれることを望んでいました。
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
出力したい場所
アンディ-----E1アンディ-----E2アンディ-----E3アンディ-----E4アンディ-----E5A1 A2 A3
前もって感謝します。