0

次の XML ファイルがあるとします。

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <project>
    <ixGroup>105</ixGroup>
    <sGroup>Place Group</sGroup>
  </project>
  <project>
    ...

そして、次のコードを使用して、そこから個別の値<ixGroup><sGroup>テキスト値を抽出します。

XDocument doc = XDocument.Load(@"C:\temp\xmlParse2.xml");

var projects = (from project in doc.Descendants("project")
                select new {
                    id = project.Element("ixGroup").Value,
                    name = project.Element("sGroup").Value
                }).Distinct();

foreach(var project in projects)
{
    project.id.Dump("id");
    project.name.Dump("name");
}

同じ xml ファイルに、<projects>以下に追加されたような追加の要素がある場合:

<response>
  <projects>
    <project>
      <ixGroup>105</ixGroup>
      <sGroup>Place Group</sGroup>
    </project>
    <project>
      ...

<project>上記の LINQ コードを変更して要素にアクセスするにはどうすればよいですか?

4

3 に答える 3

2

あなたはそうする必要はないでしょう。テストしたばかりですが、現在のLINQステートメントは、<project>要素内にネストされているかどうかに関係なく、すべての要素を返します<projects>

于 2011-04-14T13:58:12.237 に答える
2

コードを変更する必要はまったくありません。このDescendantsメソッドは、一致する要素を見つけるために必要なだけツリーを下まで検索しますが、これは呪いと祝福の両方になる可能性があります。あなたの場合、中間<projects>ノードを追加しても、書かれたコードは引き続き機能します。

(直接の子メソッドのみを検索するメソッドはChildren().

于 2011-04-14T13:53:05.580 に答える
0

Elements は子ノードのみを検索しますが、Descendants はツリーをずっと下まで検索します。つまり、何もする必要はありません。

于 2011-04-14T13:53:22.493 に答える