我有这个字符串:
<test>I am a test</test>
但是当我在我的xml文件中编写它并打开它时,我有这个:
<test>I am a test</test>
我不知道如何使用良好的格式。我试过HttpUtility.HtmlDecode,但它没有解决我的问题。
你对此有什么想法吗?
编辑:很抱歉由于之前没有发布我的代码,我认为我的问题确实非常简单。这是我刚刚写的一个示例,它恢复了这种情况(我不再工作,所以我没有原始代码):
XmlDocument xmlDoc = new XmlDocument();
doc.LoadXml("<root>" +
"<test>I am a test</test>" +
"</root>");
string content = xmlDoc.DocumentElement.FirstChild.InnerXml;
XDocument saveFile = new XDocument();
saveFile = new XDocument(new XElement("settings", content));
saveFile.Save("myFile.xml");
我只是希望我的xml文件内容看起来像我的原始字符串, 所以在我的情况下,文件通常包含:
<settings>
<root>
<test>I am a test</test>
</root>
</settings>
对吗?但相反,我有类似的东西:
<settings><root><test>I am a test</test></root>
</settings>
答案 0 :(得分:1)
您可以执行Converting XDocument to XmlDocument and vice versa的操作,将XmlDocument
的根元素转换为XElement
,然后将其添加到XDocument
:
public static class XmlDocumentExtensions
{
public static XElement ToXElement(this XmlDocument xmlDocument)
{
if (xmlDocument == null)
throw new ArgumentNullException("xmlDocument");
if (xmlDocument.DocumentElement == null)
return null;
using (var nodeReader = new XmlNodeReader(xmlDocument.DocumentElement))
{
return XElement.Load(nodeReader);
}
}
}
然后使用如下:
// Get legacy XmlDocument
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<root>" +
"<test>I am a test</test>" +
"</root>");
// Add its root element to the XDocument
XDocument saveFile = new XDocument(
new XElement("settings", xmlDoc.ToXElement()));
// Save
Debug.WriteLine(saveFile.ToString());
输出是:
<settings> <root> <test>I am a test</test> </root> </settings>
请注意,这可以避免将XmlDocument
转换为XML字符串并从头开始重新解析的开销。