Как распечатать <? 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.
Ответы
Ответ 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>