[C#] 如何使用XDocument打印<?xml version =“1.0”?>


Answers

这是迄今为止最好的方式和最可管理的方式:

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到.Unicode或.UTF32来改变编码

Question

使用ToString方法时,有没有办法让XDocument打印xml版本? 有它输出这样的东西:

<?xml version="1.0"?>
<!DOCTYPE ELMResponse [
]>
<Response>
<Error> ...

我有以下几点:

var xdoc = new XDocument(new XDocumentType("Response", null, null, "\n"), ...

这将打印这很好,但它缺少上面所述的“<?xml版本”。

<!DOCTYPE ELMResponse [
]>
<Response>
<Error> ...

我知道你可以通过手动输出我自己来做到这一点。 只是想知道是否可以通过使用XDocument。




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>