1

下面给出了一个读取和写入 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;
                }
          }
4

2 回答 2

2

您需要检查元素是否为空:

   case XmlNodeType.Element:
       {                         
           writer.WriteStartElement(reader.Name);
           writer.WriteAttributes(reader, false);
           if (reader.IsEmptyElement) writer.WriteEndElement();
           break;
       } 
于 2011-04-25T23:18:45.717 回答
1

我想你正在寻找XmlTextReader.IsEmptyElement. 当(且仅当)元素是自闭合元素时,它返回 true。有关详细信息,请参阅此 msdn 页面

于 2011-04-25T23:16:35.997 回答