在xml中写入不保留格式?

时间:2015-10-01 18:22:16

标签: c# xml formatting

我有这个字符串:

<test>I am a test</test>

但是当我在我的xml文件中编写它并打开它时,我有这个:

&lt;test&gt;I am a test&lt;/test&gt;

我不知道如何使用良好的格式。我试过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>&lt;root&gt;&lt;test&gt;I am a test&lt;/test&gt;&lt;/root&gt;
</settings>

1 个答案:

答案 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字符串并从头开始重新解析的开销。