0
所以我使用這段代碼來解析一個巨大的(80,000行)XML文檔。但是,當它交給我時,由於父節點(它由代碼中的if語句修復)添加了unnessecary行,現在它在空節點上翻倍。用C過濾掉XML中的空標籤#
每當我打了一個空的節點會加倍前的節點上...例如這裏是XML的peice的:
<edit>
<who>Jim Johnson([email protected])</who>
<when>2010-08-18T12:14:33.613Z</when>
<description></description>
</edit>
而且數據饋送我得到最終看起來像:
who Jim Johnson
when 8/18/2010
description 8/18/2010
任何人都有一個好主意,如何修剪掉這些空標籤? 以下是生成此表的代碼片段。
using (XmlReader reader = XmlReader.Create(new StringReader(
{
// Parse the file and display each of the nodes.
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
elementName = reader.Name;
switch (elementName)
{
//display my title stuff
}
break;
case XmlNodeType.Text:
elementText = reader.Value;
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
break;
case XmlNodeType.Comment:
break;
case XmlNodeType.EndElement:
if (elementName == reader.Name)
{
contractRowArray1[0] = elementName;
contractRowArray1[1] = elementText;
contractRow = contractTable.NewRow();
contractRow.ItemArray = contractRowArray1;
contractTable.Rows.Add(contractRow);
}
break;
}
}
}
我已經嘗試過,對於空白標籤elementText等於以前的文本,所以它永遠不會是由空。通過程序elementText只提到3次,2次在我發佈的代碼段中,唯一的其他時間是初始化。實際上,當我放置空值檢查時,我沒有最重要的部分,讓我看看如果不刪除所有的信息,添加它是否有效。 – SomeoneRandom 2011-06-06 19:52:35
似乎已經工作了,我仍然困惑如何將其設置爲空,並再也不會改變它的價值,它並沒有消滅所有的數據....但我想它的工作原理!謝謝! :D – SomeoneRandom 2011-06-06 19:58:28
當它啓動一個新節點時,它需要消除以前的狀態。在這種情況下,當您啓動一個新元素時,您需要清除前一個元素的文本。 – Amy 2011-06-06 20:44:39