0

XML

<?xml version="1.0" encoding="utf-8" ?> 
<animals>
    <animal id="fisrt">
        <type>Dog</type>
        <name>Han</name>
    </animal>
    <animal id="second">
        <type>Cat</type>
        <name>Leia</name> 
    </animal>
</animals>

C#

using System.Xml.Linq;

string id = "second";
var filter = from ab in element.Elements("animal") where ab.Attribute("id").Equals(id) select ab;
foreach (XElement selector in filter)
{
    label1.Content = selector.Element("name").Value;
}

私が助けを必要としているのは、親要素の ID に基づいて要素を選択することです。目標は、親のIDが「2番目」の名前を選択することなので、「レイア」を取得しようとしています。私が直面している問題は、ラベルに何も起こっていないことです。

何が間違っているのか、どうすればこの問題を解決できますか。誰かが私の目標を達成するためのより良い方法を知っていれば、私は別のアプローチにもオープンです.

4

2 に答える 2

1

属性の値を確認するのを逃します:

where ab.Attribute("id").Value.Equals(id)

この助けを願っています!

于 2013-05-18T02:49:49.943 に答える
-1

これはどう:

string name = xdoc.Elements("animal")
     .Where (e=>e.Attribute("id")=="first")
     .Elements("name")
     .Select(e=>e.Value)
     .FirstOrDefault();

基本的に、id属性に関する条件を の中に入れてwhere、クエリを続行します。

私はこれが linq 構文ではなくメソッド アノテーションであることを知っています。

于 2013-05-18T02:49:20.243 に答える