Ich versuche herauszufinden, wie ich Teile einer XML-Datei in eine Klasse einlesen kann. Teile von XML zu verschiedenen Klassen analysieren
Dies ist die Struktur der XML-Datei:
<Root>
<Element1>
<Element2>
<ElementID></ElementId>
<Element3a>
<Element3aId id="">0</Element3aId>
<Element3aId id="">0</Element3aId>
</Element3a>
<Element3b>
<Element3bId id="">0</Element3bId>
<Element3bId id="">0</Element3bId>
</Element3b>
<Element3c>
<Element3cId id="">0</Element3cId>
<Element3cId id="">0</Element3cId>
</Element3c>
</Element2>
</Element1>
</Root>
ich die folgenden Klassen erstellt haben (I entfernt Accessoren/Mutatoren, um zu versuchen, den Code zu vereinfachen:
public struct Element3a
{
[XmlAttribute("id")]
string id;
[XmlElement("Element3aId")]
int Element3aId;
}
[XmlRootAttribute("Element2")]
public struct Element1
{
[XmlElement("ElementID")]
int id;
List<Element3a> Element3aId;
List<Element3a> Element3bId;
List<Element3a> Element3cId;
}
Hier ist mein Parsing code:
XDocument xDoc = XDocument.Load(filePath);
var Element2List = xDoc.Root.Descendants().FirstOrDefault(c => c.Name.LocalName.Equals("Element1"));
XmlSerializer serializer = new XmlSerializer(typeof(Element1));
using (var reader = Element2List.CreateReader())
{
do
{
reader.ReadToDescendant("Element2");
Element1 tag1 = (Element1)serializer.Deserialize(reader.ReadSubtree());
// How do I populate the Element3a Lists here?
} while (reader.ReadToNextSibling("Station"));
reader.Close();
}
Element3a/3b/3c alle haben die gleichen Daten in ihnen, also möchte ich in der Lage sein um sie nur in die Element3a-Strukturen zu serialisieren. Ich bin in der Lage, die Element2-Informationen in die Element2-Klasse zu bekommen, aber ich kann die Element3a-Listen in dieser Klasse nicht auffüllen.
Vielen Dank für die Hilfe! Ich entschuldige mich für die Tag-Namen, ich versuchte zu vereinfachen, so viel wie ich konnte.
Hinweis: eine gültige HTML-Posting uns helfen kann ... –
Wie kann ich das tun? Meinst du ein HTML-Code-Snippet? – user2970916
Ok, du hast dein XML korrigiert, aber eins verpasst. Xml ist case sensitive 'ElementID! = ElementId' –