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

Как получить Xml как строку из XDocument?

Я новичок в LINQ to XML. После того, как вы создали XDocument, как вы получаете OuterXml этого, как вы сделали с XmlDocument?

4b9b3361

Ответ 1

Вам нужно только использовать переопределенный метод ToString() объекта:

XDocument xmlDoc ...
string xml = xmlDoc.ToString();

Это работает со всеми объектами XObject, такими как XElement и т.д.

Ответ 2

Я не знаю, когда это изменилось, но сегодня (июль 2017 года), когда вы пытаетесь ответить, я получил

"System.Xml.XmlDocument"

Вместо ToString() вы можете использовать первоначально предназначенный способ доступа к содержимому XmlDocument: запись документа xml в поток.

XmlDocument xml = ...;
string result;

using (StringWriter writer = new StringWriter())
{
  xml.Save(writer);
  result = writer.ToString();
}

Ответ 3

Используйте ToString() для преобразования XDocument в строку:

string result = string.Empty;
XElement root = new XElement("xml",
    new XElement("MsgType", "<![CDATA[" + "text" + "]]>"),
    new XElement("Content", "<![CDATA[" + "Hi, this is Wilson Wu Testing for you! You can ask any question but no answer can be replied...." + "]]>"),
    new XElement("FuncFlag", 0)
);
result = root.ToString();

Ответ 4

Выполнение XDocument.ToString() может не дать вам полный XML.

Чтобы получить объявление XML в начале документа XML в виде строки, используйте метод XDocument.Save():

    var ms = new MemoryStream();
    using (var xw = XmlWriter.Create(new StreamWriter(ms, Encoding.GetEncoding("ISO-8859-1"))))
        new XDocument(new XElement("Root", new XElement("Leaf", "data"))).Save(xw);
    var myXml = Encoding.GetEncoding("ISO-8859-1").GetString(ms.ToArray());