我是LINQ to XML的新手。构建XDocument
后,如何获得OuterXml
XmlDocument
,就像使用{{1}}一样?
答案 0 :(得分:84)
您只需要使用对象的重写ToString()方法:
XDocument xmlDoc ...
string xml = xmlDoc.ToString();
这适用于所有XObject,如XElement等。
答案 1 :(得分:9)
我不知道这种情况何时发生了变化,但今天(2017年7月)在尝试解答时,我得到了
“System.Xml.XmlDocument”
您可以使用最初预期的方式访问{
"name": "dwvgapi",
"short_name": "dwvgapi",
"description": "Google API test for dwv. Used for testing purposes only.",
"version": "0.1.0.2",
"manifest_version": 2,
"app": {
"urls": [
"https://ivmartel.github.io/dwvgapi/demo/"
],
"launch": {
"web_url": "https://ivmartel.github.io/dwvgapi/demo/index.html"
}
},
"icons": {
"50": "resources/icons/dwvgapi-50.png",
"128": "resources/icons/dwvgapi-128.png"
},
"offline_enabled": true,
"container": "GOOGLE_DRIVE",
"api_console_project_id": "575535891659",
"gdrive_mime_types": {
"http://drive.google.com/intents/opendrivedoc": [
{
"type": ["application/dicom", "application/vnd.google.drive.ext-type.dcm"],
"href": "https://ivmartel.github.io/dwvgapi/demo/index.html",
"title": "Open",
"disposition": "window"
}
]
}
}
内容而不是ToString()
:将xml doc写入流。
XmlDocument
答案 2 :(得分: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();
答案 3 :(得分:0)
执行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());
答案 4 :(得分:0)
几个回答给出了一个稍微不正确的答案。
XDocument.ToString()
省略了 XML 声明(并且,根据@Alex Gordon 的说法,如果 XML 包含编码的异常字符,例如 &
,则可能会返回无效的 XML)。XDocument
保存到 StringWriter
将导致 .NET 发出 encoding="utf-16"
,这是您很可能不想要的(如果您将 XML 保存为字符串,这可能是因为您想要稍后将其保存为文件,事实上保存文件的标准是 UTF-8 - .NET 将文本文件保存为 UTF-8,除非另有说明)。使用以下内容:
var memory = new MemoryStream();
xDocument.Save(memory);
string xmlText = Encoding.UTF8.GetString(memory.ToArray());
这将返回带有 UTF-8 声明的 XML 文本。