2013-01-09 2 views
8

스택 오버플로에서 몇 가지 스레드를 살펴본 결과 답변을 찾을 수 없습니다. 나는 다음과 같은 XML 파일의 설정을 가지고 :C# XML 파일 구문 분석

나는 모든 "항목"태그를 선택하고 ID, 유형, 항목의 내부 이름과 설명 태그를 반환해야
<entry id="1" type="a"> 
    <name>string 1</name> 
    <description>any description</description> 
</entry> 
<entry id="2" type="b"> 
    <name>string 2</name> 
    <description>any description #2</description> 
</entry> 

. C#으로 어떻게 그렇게 할 수 있습니까?

감사합니다, HtmlAgilityPack 도서관에서

+0

확실히 XML처럼 보입니다 ... 나는 XML을위한 XDocument와 LINQ 확장을 사용할 것입니다. 추가 된 힘이 필요한 경우 XPath를 사용할 수도 있습니다 (경우에 따라 복잡성을 희생해야 함). http://stackoverflow.com/questions/566167/query-an-xdocument-for-elements-by-name-at-any-depth –

+0

http://msdn.microsoft.com/en-us/library/system을 참조하십시오. .xml.linq.xdocument.descendants.aspx (Linq에서 Descendants로 XMl까지는 좋은 출발점입니다). –

답변

13

XML 파일에는 단일 루트 노드가 있어야합니다. 여기에 LINQ to XML을 구문 분석된다

var xdoc = XDocument.Load(path_to_xml); 
var entries = from e in xdoc.Descendants("entry") 
       select new { 
       Id = (int)e.Attribute("id"), 
       Type = (string)e.Attribute("type"), 
       Name = (string)e.Element("name"), 
       Description = (string)e.Element("description") 
       }; 

쿼리 (속성 아이디, 유형, 이름 및 설명과 함께) 각 항목 요소에 대응하는 익명 객체의 순서를 반환합니다.

+0

@ user1425433 [XML 문서에는 루트 요소가 있어야 함] (http://www.w3schools.com/xml/xml_syntax.asp) 질문에 루트 수준에 두 개의 항목 * 요소가 있습니다 –

1

봐. 이를 사용하여 LINQ 또는 XPath를 사용하여 HTML을 구문 분석 할 수 있습니다.