に空/ブランクの要素を削除します。私は、各ノードを反復し、次の操作を実行しようとしている私はこのようなXML文書の持つXMLノードのコレクション
<magento_api>
<data_item>
<code>400</code>
<message>Attribute weight is not applicable for product type Configurable Product</message>
</data_item>
<data_item>
<code>400</code>
<message>Resource data pre-validation error.</message>
</data_item>
<data_item>
<code>1</code>
<message></message>
</data_item>
<data_item>
<code></code>
<message>No code was given</message>
</data_item>
</magento_api>
を:
- いずれかを捨てます空白/空白の要素。
- 値を含む要素のみで新しいNodeを生成します。
- 結果のドキュメントを別のWebサービスに送信します。
私が苦労している部分は、各ノードを反復し、各要素でヌル値をチェックする方法です。
私は http://rextester.com/runcodeで出て、このコードをテストしてきたが、それを把握することができないよう:
Console.WriteLine("Querying tree loaded with XElement.Load");
Console.WriteLine("----");
XElement doc = XElement.Parse(@"<magento_api>
<data_item>
<code>400</code>
<message>Attribute weight is not applicable for product type Configurable Product</message>
</data_item>
<data_item>
<code>400</code>
<message>Resource data pre-validation error.</message>
</data_item>
<data_item>
<code>1</code>
<message></message>
</data_item>
<data_item>
<code></code>
<message>No code was given</message>
</data_item>
</magento_api>");
int counter = 1;
IEnumerable<XNode> nodes =
from nd in doc.Nodes()
select nd;
foreach (XNode node in nodes)
{
Console.WriteLine(counter + "-" + node);
IEnumerable<XElement> elements =
from el in node //this is where I've been trying various methods, but no dice.
select el;
foreach (XElement e in elements)
{
Console.WriteLine(counter + "-" + e.Name + "-" + e.Value + "\r\n");
}
counter++;
}
上記のXML入力に基づいて、私は次のような出力を得ることを望んだ:
<magento_api>
<data_item>
<code>400</code>
<message>Attribute weight is not applicable for product type Configurable Product</message>
</data_item>
<data_item>
<code>400</code>
<message>Resource data pre-validation error.</message>
</data_item>
<data_item>
<code>1</code>
</data_item>
<data_item>
<message>No code was given</message>
</data_item>
</magento_api>
正しいメソッドを使用してノードと要素を反復処理しているかどうかはわかりません。
"NULLの要素"とはどういう意味ですか?また、ここでは何も目的のためにクエリー式を使用していないことに注意してください - たとえば、 'el from node select el'の代わりに' node'を後で使うことができます... –
@JonSkeet - /空の。それはNULLと同じではありませんか? – jared
実際には、XMLに "NULL"という概念はありません。また、どのような構造が戻ってくるのかははっきりしていません。与えられた入力ファイルの目的の出力を使って質問を編集することができれば便利です。 –