2013-04-05 4 views
0

나는 XML 파일을 쿼리하고 검색 조건을 기반으로 데이터를 찾아야하는 프로젝트의 일부입니다. XDocument을 사용하여 몇 가지 예제를 시도했지만 내 문제는 구문 분석이 필요한 XML 파일에 약 7 가지 변형이 있다는 것입니다. 따라서 요소 이름을 모르며 파일에 포함될 수있는 특성 만 알면됩니다. 각 유사 콘텐츠에 대해 파일을 하나의 파일로 연결 했으므로 검색이 더 간편 해지는 것이 내 이론이었습니다. 그 이론은 지금까지 잘못된 것으로 입증되었습니다.알 수없는 요소가있는 LINQ to XML을 사용하여 특성 값 가져 오기

모두 속성의 일부 또는 전부를 갖습니다. 예 :

<root> 
    <T1> 
     <T11 name="123"/> 
     <H05 FileType="T52" ClientID="POB" /> 
    </T1> 
    <T1> 
     <T11 name="1234"/> 
     <H05 FileType="T2" ClientID="POB" /> 
     <E1 ErrorCode="AA00" ErrorText="There was an Error" /> 
     <E1 ErrorCode="BB00" ErrorText="There was another Error" /> 
    </T1> 
</root> 

오류 검색의 이름 모음을 원한다면 파일에서 발견 된 속성 이름 만 사용하여 LINQ로 검색 할 수 있습니까?

+0

나는 당신이 무엇에 대해 묻고 있는지 전혀 모르겠다. 질문을 업데이트 할 수 있습니까? 해당 샘플 XLM에 대해 원하는 출력을 표시 하시겠습니까? – MarcinJuraszek

답변

1

당신이 ErrorCode 속성을 포함하는 문서의 모든 노드를 찾으려면 가정 :

XDocument document = LoadXml(); 
IEnumerable<XElement> errorNodes = document 
    // Find all descendant nodes: 
    .Descendants() 
    // With an "ErrorCode" attribute: 
    .Where(el => el.Attribute("ErrorCode") != null); 
+0

이것은 내가 본 후에 꽤 닮았습니다. 알려진 XML 문서 전체를 검색 할 수있는 기능. 대단히 감사합니다. 원래의 설명이 명확하지 않은 경우 사과드립니다. – James

0

은 당신이 뭔가를 할 수 있어야합니다.

 var xmlString = @"<root> 
     <T1> 
     <T11 name=""123\""/> 
     <H05 FileType=""T52"" ClientID=""POB"" /> 
     </T1> 
     <T1> 
     <T11 name=""1234""/> 
     <H05 FileType=""T2"" ClientID=""POB"" /> 
     <E1 ErrorCode=""AA00"" ErrorText=""There was an Error"" /> 
     <E1 ErrorCode=""BB00"" ErrorText=""There was another Error"" /> 
     </T1> 
     </root>"; 

     var xml = XDocument.Parse(xmlString); 

     var names = from x in xml.Descendants().Attributes("name") select x.Parent; 
관련 문제