以下是一个读取XML并写入的示例代码。输出XML无效,因为它无法检测到"<test attrib="123" />
等短标记。有什么办法可以使用XmlTextReader检测这样的标签吗?
while (reader.Read()){
switch (reader.NodeType)
{
case XmlNodeType.Element:
{
writer.WriteStartElement(reader.Name);
writer.WriteAttributes(reader, false);
break;
}
case XmlNodeType.Text:
writer.WriteString(reader.Value);
break;
case XmlNodeType.XmlDeclaration:
case XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
writer.WriteComment(reader.Value);
break;
case XmlNodeType.EndElement:
writer.WriteFullEndElement();
break;
}
}
答案 0 :(得分:2)
您需要检查元素是否为空:
case XmlNodeType.Element:
{
writer.WriteStartElement(reader.Name);
writer.WriteAttributes(reader, false);
if (reader.IsEmptyElement) writer.WriteEndElement();
break;
}
答案 1 :(得分:1)
我认为您正在寻找XmlTextReader.IsEmptyElement
。如果(且仅当)元素是自闭元素,它返回true。有关详细信息,请参阅this msdn page。