Как печатать с помощью 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 55

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>