如何在 C# 中使用 XmlTextReader 识别短标签?
Posted
技术标签:
【中文标题】如何在 C# 中使用 XmlTextReader 识别短标签?【英文标题】:How to identify short tags using XmlTextReader in C#? 【发布时间】:2011-04-25 22:52:43 【问题描述】:下面给出的是读取和写入 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;
【问题讨论】:
“短标签”有什么问题? 不确定你的意思。你能详细说明一下吗? “短标签”会导致什么问题? 【参考方案1】:需要检查元素是否为空:
case XmlNodeType.Element:
writer.WriteStartElement(reader.Name);
writer.WriteAttributes(reader, false);
if (reader.IsEmptyElement) writer.WriteEndElement();
break;
【讨论】:
【参考方案2】:我认为您正在寻找XmlTextReader.IsEmptyElement
。当(且仅当)元素是自闭合元素时,它返回 true。请参阅this msdn page 了解更多信息。
【讨论】:
以上是关于如何在 C# 中使用 XmlTextReader 识别短标签?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# Compact Framework 中加速 XML 的解析(使用 XmlTextReader 和 XElement)?
找不到 XmlTextReader/XmlNodeType 命名空间,如何解决?
SAX 与 XmlTextReader - C# 中的 SAX