2014-12-04 2 views
1

xml 문서를로드하는 중 요소에 foreach 루프가 있는데이 요소에 tag이라는 자식 요소를 선택하려고합니다. xml 요소의 특정 하위 항목을 가져 오는 방법은 무엇입니까?

는 XML 파일입니다

<?xml version="1.0" encoding="utf-8"?> 
<view> 
    <tag> 
     <name>content</name> 
     <tag> 
     <name>div</name> 
     </tag> 
    </tag> 
</view> 

그리고 이것은 코드입니다 :

string xmlString = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/xml/xml.xml")); 
XDocument doc = XDocument.Parse(xmlString); 
XElement xmlElement = doc.Element("view"); 
foreach (var tagItem in xmlElement.Descendants("tag")) 
{ 
    //do something 
} 

foreach 루프에서 작성된 코드는 어떤 깊이 태그의 모든 요소를 ​​포함하는 것입니다,하지만 난 원하는 첫 번째 깊이있는 것들을 얻으십시오 (아이들).

linq를 사용하여이 작업을 수행하는 방법은 무엇입니까? 원하는 요소를 가정

+0

당신이 (또한 xsd.exe와) 클래스를 생성하는 XML 그냥 다음 xsd.exe과 XSD를 생성하고있는 경우. 그런 다음 xmlserializer를 사용하여 xml을 생성 된 클래스 구조로 직렬화 할 수 있습니다. –

+0

첫 번째 심도'tag' 요소는 항상'view' 요소의 하위 요소입니까? 그럼 Ben이 말한대로해라. – helb

+2

''의 직접적인 자식을 원하면'Descendants()'대신'xmlElement.Elements ("tag")'를 사용한다. –

답변

1

<view> 요소의 아이들이 사용할 수있는 항상 :

원하는 요소를 얻기 위해 수행 할 수 더 아무것도 없다
XElement xmlElement = doc.Element("view"); 
foreach (var tagItem in xmlElement.Elements("tag")) 
{ 
    //do something (only direct children) 
} 

. 그런 다음 그러나 구현할 수 귀하의 예를 들어, Linq에와 "무언가를"

XElement firstElem = xmlElement.Elements("tag").OrderBy(e => e.Name).First(); 
관련 문제