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

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

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

我有以下几点:

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

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

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

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

通过使用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()); 

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

 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来改变编码

只要input这个

 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解决scheme代码

  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>