我有一個這樣的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>
我想遍歷每個節點並執行以下操作:
- 扔掉任何空白/空白的元素。
- 僅生成包含值的元素的新節點。
- 將生成的文檔發送到不同的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」?另外請注意,你在這裏沒有任何用途使用查詢表達式 - 例如,而不是在節點select el中編寫'el,你可以稍後使用'node' ... –
@JonSkeet - 我只是指空白的元素/空。是不是像NULL一樣? – jared
不是真的 - XML中沒有「NULL」這樣的概念。目前還不清楚你期望返回哪種結構。如果您可以使用給定輸入文件的所需輸出來編輯您的問題,這將非常有用。 –