2017-10-17 2 views
2

Ich habe die folgende XML-Struktur:Erhalten Kind-Elementname in Xml-Deserialisierung

<Root> 
    <Element Attribute="attibute"> 
     <ElementINeedNameOf /> 
     <AnotherElementINeedNameOf /> 
    </Element> 
</Root> 

Ich versuche, die Namen des Kindes-Element von element zu lesen? Daher verwende ich System.Xml.Serialization, um die anderen Elemente/Attribute zu lesen, aber ich kann die Namen der untergeordneten Elemente nicht lesen.

Vielen Dank.

+2

Normalerweise * "Gibt es einen Weg zu ...." * Fragen zeigen einen Mangel an versuchen. Bitte zeigen Sie, was Sie versucht haben zu tun und zu recherchieren –

+0

Sie können immer die Hierarchie eines 'XmlDocument' selbst durchqueren. –

+0

Bei 'System.Xml.Serialization' geht es darum, In-Memory-Objekte in XML zu serialisieren (und zu deserialisieren). Die Verwendung von XML zum Parsen ist wahrscheinlich nicht der beste Ansatz. Erwägen Sie den Namespace 'System.Xml.Linq' (Startpunkt:' XDocument'-Klasse). – decPL

Antwort

4

Es ist möglich, indem Sie das übergeordnete Element mit XmlAnyElement auswählen.

Also wäre die Lösung, so etwas zu verwenden.

[XmlAnyElement("Element")] 
public XmlElement Elements{ get; set; } 

[XmlIgnore] 
public List<string> ElementNames 
{ 
    get 
    { 
     var elementNames = new List<string>(); 
     if (Elements != null && Elements.HasChildNodes) 
     { 
      elementNames.AddRange(from XmlNode elementsChildNode in Elements .ChildNodes select elementsChildNode.Name); 
      return elementNames ; 
     } 
     else 
     { 
      //return empty List 
      return tagNames; 
     } 
    } 
}