Добавить несколько элементов в XML C # с помощью текстового редактора

1

Мне нужен следующий вывод

<BatchFile>
   <BatchFileHeader>
     <MessageType>MSG103</MessageType>
     <Version>456</Version>
   <BatchFileHeader>

   <Vendor>
     <VendorType>VVV</VendorType>
   </Vendor>
</BatchFile>

Следующий мой код

StringWriter stringwriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringwriter);
xmlTextWriter.Formatting = Formatting.Indented;
xmlTextWriter.WriteStartDocument();

xmlTextWriter.WriteStartElement("BatchFileHeader");
xmlTextWriter.WriteElementString("MessageType", "MSG103"); 
xmlTextWriter.WriteElementString("MessageVersion", "456"); 
xmlTextWriter.WriteEndElement();

xmlTextWriter.WriteStartElement("Vendor");
xmlTextWriter.WriteElementString("Vendor", "VVV"); 
xmlTextWriter.WriteEndElement();

Но я получаю следующую ошибку

токен startelement в состоянии epilog приведет к недопустимому XML-документу

Что я делаю не так?

  • 0
    Вы пишете элемент <BatchFile> , потому что XML допускает только один элемент на самом внешнем уровне. См. Это для большего количества stackoverflow.com/questions/10752363/…
  • 0
    @targarian Включите это после xmlTextWriter.WriteStartDocument(); xmlTextWriter.WriteStartElement("BatchFile"); .... xmlTextWriter.WriteEndDocument();
Теги:
xmlwriter

1 ответ

0
Лучший ответ

Вы забыли написать внешний элемент StartElement <BatchElement>.

Добавление его следует исправить вашу проблему;

StringWriter stringwriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringwriter);
xmlTextWriter.Formatting = Formatting.Indented;
xmlTextWriter.WriteStartDocument();

xmlTextWriter.WriteStartElement("BatchElement");

xmlTextWriter.WriteStartElement("BatchFileHeader");
xmlTextWriter.WriteElementString("MessageType", "MSG103"); 
xmlTextWriter.WriteElementString("MessageVersion", "456"); 
xmlTextWriter.WriteEndElement();

xmlTextWriter.WriteStartElement("Vendor");
xmlTextWriter.WriteElementString("Vendor", "VVV"); 
xmlTextWriter.WriteEndElement();

xmlTextWriter.WriteEndElement();
xmlTextWriter.WriteEndDocument();
  • 0
    Благодарю. У меня не было внешнего элемента, который был причиной ошибки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню