用C#过滤掉XML中的空标记
本文关键字:XML 过滤 | 更新日期: 2023-09-27 17:58:27
所以我使用这段代码来解析一个巨大的(80000行)XML文档。然而,当它交给我时,由于父节点(这是由代码中的if语句修复的),它添加了不必要的行,现在它在空节点上加倍。
每当我碰到一个空节点时,它就会在它之前的节点上加倍……例如,这里有一个xml:
<edit>
<who>Jim Johnson(Jim.m.Johnson@google.com)</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;
}
}
}
这行得通吗?
case XmlNodeType.Element:
elementName = reader.Name;
elementText = null; // ADDED
switch (elementName)
{
//display my title stuff
}
break;
case XmlNodeType.EndElement:
if (elementName == reader.Name && elementText != null) // MODIFIED
{
contractRowArray1[0] = elementName;
contractRowArray1[1] = elementText;
contractRow = contractTable.NewRow();
contractRow.ItemArray = contractRowArray1;
contractTable.Rows.Add(contractRow);
}
break;