2010-03-26 6 views
1

를 사용하여 요소의 집합 I XML의 다음과 같은 부분이 있습니다얻기 LINQ

<xml> 
    <ObsCont xCampo="field1"> 
     <xTexto>example1</xTexto> 
    </ObsCont> 
    <ObsCont xCampo="field2"> 
     <xTexto>example2</xTexto> 
    </ObsCont> 
    <ObsCont xCampo="field3"> 
     <xTexto>example3</xTexto> 
    </ObsCont> 
</xml> 

어떻게 LINQ (사용) 할 부모로 xCampo와 ObsCont이있는 xTexto 태그 안에 무엇인지 예를 들어 수를 속성 "field2"?

(C#을, vb.net, 당신의 선택)

답변

2
XDocument xml = XDocument.Parse(@"<your XML>"); 
from field in xml.Elements("ObsCont") 
where field.Attribute("xCampo") != null && 
field.Attribute("xCampo").Value == "field2" 
select field.Element("xTexto").Value; 

이 지정한 기준에 모든 값을 포함하는 IEnumerable을 유형의 문자열을 반환합니다.

+0

무엇 xCampo 부분에 대한 있습니까? –

+0

어떻게 든 그 부분을 놓쳤을 것입니다 ... –

1

내가 LINQ to XML을을 사용합니다 :

XDocument doc = XDocument.Load("input.xml"); 
XElement element = doc 
    .Descendants("ObsCont") 
    .Single(x => x.Attribute("xCampo").Value == "field2"); 
Console.WriteLine(element.Value); 
1
string s = @"<xml> 
     <ObsCont xCampo=""field1""> 
      <xTexto>example1</xTexto> 
     </ObsCont> 
     <ObsCont xCampo=""field2""> 
      <xTexto>example2</xTexto> 
     </ObsCont> 
     <ObsCont xCampo=""field3""> 
      <xTexto>example3</xTexto> 
     </ObsCont> 
    </xml>"; 

    XElement xe = XElement.Parse(s); 
    var n1 = xe.Elements("ObsCont") 
     .Where(a => a.Attribute("xCampo") != null && 
      a.Attribute("xCampo").Value == "field2") 
     .Select(a => a).SingleOrDefault(); 
    if (n1 != null) 
    { 
     var n2 = n1.Descendants("xTexto").SingleOrDefault(); 
     Console.Write(n2.Value); 
    }