2013-03-15 4 views
11

나는이처럼 보이는 XML이 :으로 반복

<myVal>One</myVal> 
<myVal>Two</myVal> 
<myVal>Three</myVal> 
<myVal>Four</myVal> 
<myVal>Five</myVal> 

은 내가하여 XDocument에 그로드 한 다음 해당하여 XDocument 각 XElement를 통해 반복하고 문자의 수를 계산하려면를 각 요소.

가장 좋은 방법은 무엇입니까?

먼저 루트 요소를 추가해야하거나 XDocument.Parse()를 XML로 구문 분석 할 수 없다는 것을 알았습니다. 그래서 추가 :

<span> 
     <myVal>One</myVal> 
     <myVal>Two</myVal> 
     <myVal>Three</myVal> 
     <myVal>Four</myVal> 
     <myVal>Five</myVal> 
</span> 

그러나 나는 수행 할 때

foreach (XElement el in xDoc.Descendants()) 

el가 첫 번째 <span>로 시작하는 <myVal>의 각자를 포함하고 끝나는 전체 XML이 포함됩니다 </span>.

XDocument를 사용하여 각 XML 요소 (<myVal>One</myVal> 등)를 반복하는 방법은 무엇입니까?

모든 XML 요소의 이름이 무엇인지 미리 알지 못하므로 이름이 항상 "myVal"로 지정되지는 않습니다.

답변

15

doc.Root.Elements() (루트 노드의 직접 하위 항목) 또는 doc.Root.Descendants() (모든 하위 항목에 <myVal/>을 포함 할 경우)을 사용하십시오.

2

은 다음과 같이 수행

string xml = " <span><myVal>One</myVal><myVal>Two</myVal><myVal>Three</myVal><myVal>Four</myVal><myVal>Five</myVal></span>"; 
XmlReader xr = XmlReader.Create(new StringReader(xml)); 
var xMembers = from members in XElement.Load(xr).Elements() select members; 

foreach (XElement x in xMembers) 
{ 
    var nodeValue = x.Value; 
} 

을 이제 두 개의 등

+2

왜 당신은 신원 조회에 선택 적용하는 당신이 하나를 얻을 것이다 nodeValue를의 값을 보면? – Servy