Как получить Xml как строку из XDocument? - PullRequest
61 голосов
/ 26 декабря 2010

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

Ответы [ 4 ]

84 голосов
/ 26 декабря 2010

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

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

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

9 голосов
/ 26 июля 2017

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

"System.Xml.XmlDocument"

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

XmlDocument xml = ...;
string result;

using (StringWriter writer = new StringWriter())
{
  xml.Save(writer);
  result = writer.ToString();
}
3 голосов
/ 12 апреля 2013

Используйте 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();
0 голосов
/ 08 июля 2019

Выполнение 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...