Подтвердить что ты не робот

Как распечатать <? Xml version = "1.0"?> С помощью XDocument

Есть ли способ, чтобы XDocument печатал xml-версию при использовании метода ToString? Вывести что-то вроде этого:

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

У меня есть следующее:

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

который напечатает это, что хорошо, но отсутствует версия "lt;? xml", как указано выше.

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

Я знаю, что вы можете сделать это, выведя его вручную. Просто хотел узнать, возможно ли это с помощью XDocument.

4b9b3361

Ответ 1

Используя 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());

Ответ 2

Это, безусловно, лучший способ и наиболее управляемый:

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

Ответ 3

Просто введите этот

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>

Ответ 4

КОД решения 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>