0

次の XML があります。

<?xml version="1.0" ?>
<NewDataSet>
   <Data>
     <ElementDefinition>
      <ID>1</ID>
      <QUANTITY>0</QUANTITY>
     </ElementDefinition>
     <ElementDefinition>
      <ID>2</ID>
      <QUANTITY>1</QUANTITY>
     </ElementDefinition>
   </Data>
</NewDataSet>

0 以外の値を持つ QUANTITY 要素を含むすべての ElementDefinitions を含む配列を作成する必要があります。

私は試した:

var f = XDocument.Load(path);
var xe = f.Root.Elements("QUANTITY").Where(x => x.Value != "0").ToArray();

しかし、それはうまくいかないようです。上記の XML では、配列には 1 つの項目が含まれているはずですが、0 のままです。

その後、配列内の ElementDefinition ごとに文字列を作成する必要があります。文字列には、対応する ID 要素の値が含まれている必要があります。

そのために私は試しました:

foreach (string x in xe)
{
   string ID = //not sure what to do here
}
4

2 に答える 2

0

次のようなものが必要です。

var ids = f.Root.Descendants("ElementDefinition")
           .Where(x => x.Element("QUANTITY").Value != "0")
           .Select(x => x.Element("ID").Value);

ID が必要なため、すべての QUANTITY ノードを選択することはあまり役に立ちません。代わりに、質問で指定したものを正確に選択してください。

Descendants("ElementDefinition")0 以外の値を持つ QUANTITY を持つすべての ElementDefinitions ( ) ( Where(x => x.Element("QUANTITY").Value != "0")。結果のノードから、ID ( Select(x => x.Element("ID").Value)) を選択します。

于 2012-09-13T10:17:14.097 に答える
0

と交換できます

var xe = f.Root.Elements("Data/ElementDefinition/QUANTITY").Where(x => x.Value != "0").ToArray();
于 2012-09-13T10:17:52.823 に答える