我是LINQ to XML的新手。构建完成后XDocument
,如何OuterXml
像使用它那样得到它XmlDocument
?
我是LINQ to XML的新手。构建完成后XDocument
,如何OuterXml
像使用它那样得到它XmlDocument
?
Answers:
您只需要使用对象的重写ToString()方法:
XDocument xmlDoc ...
string xml = xmlDoc.ToString();
这适用于所有XObject,例如XElement等。
System.Xml.XmlDocument
&
或其他特殊字符,则将无法使用
我不知道什么时候改变了,但是今天(2017年7月)尝试答案时,我得到了
“ System.Xml.XmlDocument”
代替ToString()
,您可以使用最初预期的方式来访问XmlDocument
内容:将xml文档写入流。
XmlDocument xml = ...;
string result;
using (StringWriter writer = new StringWriter())
{
xml.Save(writer);
result = writer.ToString();
}
使用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());
StringWriter()
到Save()
直接。
使用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();