2011-12-16 9 views
0

以下のwhere節で本当に助けが必要です。XElementからxmlノードを取得できません

は、このXML

<name xmlns="http://www.imsglobal.org/xsd/imslip_v1p0"> 
<partname> 
    <typename> 
    <tyvalue>First</tyvalue> 
    </typename> 
    <text>Charles</text> 
</partname> 
<partname> 
    <typename> 
     <tyvalue>Last</tyvalue> 
    </typename> 
    <text>Ward</text> 
    </partname> 
</name> 

このコードを考えてみましょう一つの要素

List<XElement> xElements = xmlDocument.Descendants(Aw + "name"). 
Where(x => (x.Element(Aw + "partname").Element(Aw + "typename").Element(Aw + "tyvalue")).Value == "First"). 
Select(x => x.Element(Aw + "partname").Element(Aw + "text")).ToList(); 

を返します。しかし、私は "最終" にwhere句を変更した場合、それはゼロ要素を返します。

List<XElement> xElements = xmlDocument.Descendants(Aw + "name"). 
Where(x => (x.Element(Aw + "partname").Element(Aw + "typename").Element(Aw + "tyvalue")).Value == "Last"). 
Select(x => x.Element(Aw + "partname").Element(Aw + "text")).ToList(); 

助けてください。私は本当に立ち往生している。

答えて

0

これを試してみてください:

List<XElement> xElements = xmlDocument.Descendants(Aw + "name") 
       .Descendants(Aw + "partname") 
       .Descendants(Aw + "typename") 
       .Descendants(Aw + "tyvalue") 
       .Where(x => x.Value == "Last") 
       .ToList(); 
+0

ご返信ありがとうございます。私は家に帰る途中で地下鉄に乗っていますが、まずは朝起きてみましょう。 – FatAlbert

0

x.Elementは、最初の子を返します。多くの場合、「要素」の代わりに「要素」を使用する必要があります。この要素には反復処理が必要です。

関連する問題