Как печатать с помощью XDocument
есть ли способ, чтобы XDocument печатал версию xml при использовании метода ToString? Пусть он выведет что-то вроде этого:
<?xml version="1.0"?>
<!DOCTYPE ELMResponse [
]>
<Response>
<Error> ...
у меня есть следующие:
var xdoc = new XDocument(new XDocumentType("Response", null, null, "n"), ...
который будет печатать это, что хорошо, но он отсутствует "версия xml", как указано выше.
<!DOCTYPE ELMResponse [
]>
<Response>
<Error> ...
Я знаю, что вы можете сделать это путем вывода его вручную себе. Просто хотел узнать, возможно ли это с помощью XDocument.
4 ответа:
С помощью XDeclaration. Это добавит объявление.
но с
ToString()
вы не получите желаемого результата.вы должны использовать
XDocument.Save()
С помощью одного из его методов.полный пример:
var doc = new XDocument( new XDeclaration("1.0", "utf-16", "yes"), new XElement("blah", "blih")); var wr = new StringWriter(); doc.Save(wr); Console.Write(wr.ToString());
Это самый лучший способ и наиболее управляемым:
var xdoc = new XDocument(new XElement("Root", new XElement("Child", "台北 Táiběi."))); string mystring; using(var sw = new MemoryStream()) { using(var strw = new StreamWriter(sw, System.Text.UTF8Encoding.UTF8)) { xdoc.Save(strw); mystring = System.Text.UTF8Encoding.UTF8.GetString(sw.ToArray()); } }
и я говорю это только потому, что вы можете изменить кодировку на что угодно, изменив .UTF8 to .Юникод или .Кодировках utf32
просто введите это
var doc = new XDocument ( new XDeclaration ("1.0", "utf-16", "no"), new XElement ("blah", "blih") );
и вы
<?xml version="1.0" encoding="utf-16" standalone="no"?> <blah>blih</blah>
VB.NET код решения
код
Dim _root As XElement = <root></root> Dim _element1 As XElement = <element1>i am element one</element1> Dim _element2 As XElement = <element2>i am element one</element2> _root.Add(_element1) _root.Add(_element2) Dim _document As New XDocument(New XDeclaration("1.0", "UTF-8", "yes"), _root) _document.Save("c:\xmlfolder\root.xml")
выход Примечание(пожалуйста, откройте выход в блокноте )
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <root> <element1>i am element one</element1> <element2>i am element one</element2> </root>