Мне нужен следующий вывод
<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-документу
Что я делаю не так?
Вы забыли написать внешний элемент 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();
<BatchFile>
, потому что XML допускает только один элемент на самом внешнем уровне. См. Это для большего количества stackoverflow.com/questions/10752363/…xmlTextWriter.WriteStartDocument(); xmlTextWriter.WriteStartElement("BatchFile"); .... xmlTextWriter.WriteEndDocument();