0

これが私が扱っているXMLです:

ここに画像の説明を入力してください

そしてこれまでの私のコード:

XDocument doc = XDocument.Load(@"C:\Users\morganjo\Desktop\bb-tasks.xml");

        var q = from val in doc.Descendants("property")
                select (string)val.Attribute("value");

        foreach (string str in q)
        {
            Console.WriteLine(str);
        }

これにより、要素値のすべての数値の値が取得されます。私が抱えている問題はこれです。要素「name」が「period」または「delay」に等しい場合にのみ値が必要です。これらは価値の後に発生するので、これをどうやって解決するのかわかりません。

4

1 に答える 1

1

属性の順序は重要ではありません。あなたはそれの値を取り、それを使って要素をフィルタリングすることができます:

var q = from val in doc.Descendants("property")
        where (string)val.Attribute("name") == "delay" || (string)val.Attribute("name") == "period"
        select (string)val.Attribute("value");

または、letキーワードを使用して属性値を取得し、それを2回使用します。

var q = from val in doc.Descendants("property")
        let name = (string)val.Attribute("name")
        where name == "delay" || value == "period"
        select (string)val.Attribute("value");
于 2013-03-26T19:41:01.203 に答える