Как определить короткие теги, используя XmlTextReader в C #? - PullRequest
1 голос
/ 26 апреля 2011

Ниже приведен пример кода, который читает 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 ]

2 голосов
/ 26 апреля 2011

Вам нужно проверить, пуст ли элемент:

   case XmlNodeType.Element:
       {                         
           writer.WriteStartElement(reader.Name);
           writer.WriteAttributes(reader, false);
           if (reader.IsEmptyElement) writer.WriteEndElement();
           break;
       } 
1 голос
/ 26 апреля 2011

Я думаю, что вы ищете XmlTextReader.IsEmptyElement. Он возвращает true, если (и только если) элемент является самозакрывающимся элементом. См. эту страницу MSDN для получения дополнительной информации.

...