如何在C#中使用XmlTextReader识别短标签?

时间:2011-04-25 22:52:44

标签: c# xml tags short xmltextreader

以下是一个读取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;
                }
          }

2 个答案:

答案 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