Ich habe eine Zeit lang versucht, eine Schemadatei zu analysieren ... hoffte, dass jemand helfen könnte.Analysiere XSD mit XDocument
Hier ist, was die XSD sieht aus wie
<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>
Dies ist nicht vollständig, aber genug, um die Idee zu bekommen. Hier ist der Code, den ich versuchte, den Elementnamen zu erhalten, gefolgt von irgendwelchen Attributen, wenn sie existierten, aber dies gibt nur die Elementnamen zurück.
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);
}
}
Dies wird outputing
Andy ----- ----- E1 Andy E2 Andy ----- ----- E3 Andy E4 Andy --- - E5
Wo ich es Ausgabe
Andy ----- E1 Andy ----- E2 Andy ----- E3 Andy ----- E4wollenAndy ----- E5 A1 A2 A3
Vielen Dank im Voraus.
Danke Danke !!! – AndySousa