2017-10-17 5 views
2

나는 다음과 같은 XML-구조 얻었다 : 나는 element의 자식 요소의 이름을 읽기 위해 노력하고XML을 역 직렬화에 아이 요소의 이름을 가져옵니다

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

를? 그 때문에 다른 요소/속성을 읽으려고 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; 
     } 
    } 
}