1

私はこのXMLの例を持っています

<work>
 <worker name="Jason" job="admin">
 <worker name="Frank" job="employee">
 <worker name="John" job="admin">
<work>

ジョブ管理者でワーカー名を取得しようとしています。

これが私の現在のコードの一部です。このコードは、すべてのワーカーを取得します。

Worker = workerElement.Elements("work")
                      .Elements("worker")
                      .Select(c => (string)c.Attribute("name"))
                      .ToArray();

私は次の解決策を試しています

Worker = workerElement.Elements("work")
                      .Elements("worker")
                      .Select(c => (string)c.Attribute("name[@job='admin']"))
                      .ToArray();

仕事の「タイトル」が管理者に等しいすべての名前を取得したい。

4

2 に答える 2

2

@Xtianの解は正しいです。XPathソリューションは次のとおりです。

var workers = workerElement.XPathSelectElements("//worker[@job='admin']")
                           .Select(w => (string)w.Attribute("name"));
于 2013-03-19T23:10:44.153 に答える
1

まず、xml にいくつかの間違いがあります。以下に修正しました。

<work>
 <worker name="Jason" job="admin" />
 <worker name="Frank" job="employee" />
 <worker name="John" job="admin" />
</work>

次に、Linq を試している場合は、これを使用してみてください。

Worker = workerElement.Elements("work")
                      .Elements("worker")
                      .Where(c => (string)c.Attribute("job") == "admin")
                      .Select(c => (string)c.Attribute("name"))
                      .ToArray();

または、XPath を使用している場合は、次を使用できます。

var admins = workerElement.XPathSelectElements("//worker[@job='admin']")
             .Select(w => (string)w.Attribute("name"));
于 2013-03-19T23:06:54.377 に答える