Я новичок в LINQ to XML. После того, как вы создали XDocument
, как вы получаете OuterXml
этого, как вы сделали с XmlDocument
?
Как получить Xml как строку из XDocument?
Ответ 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());