2017-10-17 143 views
2

我得到了以下XML的结构:获取子元素的名称

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

我想读的element的子元素的名称是什么? 因此,我使用System.Xml.Serialization来读取其他元素/属性,但我无法读取子元素的名称。

谢谢。

+2

通常*“有没有办法......”*问题显示缺乏尝试。请显示你曾经试图做的和研究的内容 –

+0

你总是可以自己遍历一个'XmlDocument'的层次结构。 –

+0

'System.Xml.Serialization'是关于将内存中的对象序列化为XML(以及将它们反序列化)。使用它来解析XML可能不是最好的方法。考虑使用'System.Xml.Linq'命名空间(起点:'XDocument'类)。 – decPL

回答

4

通过选择与XmlAnyElement父元素是可行的。

所以解决方案是使用这样的东西。

[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; 
     } 
    } 
}