在C#中保存XML文件而不使用XCData

时间:2012-11-08 16:06:21

标签: c# xml xcdatamodel

我在C#上有这样的字符串:

string sxml="<id>xpto</id>"

我想使用XLinq保存xml文件:

XElement cursosXML = new XElement("MenuItem", new XCData(sxml));
cursosXML.save("C:\\xpto.xml")

当我读取我的xml文件时,会出现:

<MenuItem><![CDATA[<id>xpto</id>]]></MenuItem>

但我不想要<![CDATA[

我怎样才能得到这个结果?

<MenuItem>&lt;xpto&gt;3&lt;</MenuItem>

1 个答案:

答案 0 :(得分:1)

以下是如何将字符串添加到元素

        XElement sxml = XElement.Parse("<id>xpto</id>");
        XElement cursosXML = new XElement("MenuItem", sxml);
        cursosXML.Save("C:\\xpto.xml");



以下是对您遇到的麻烦的解释。它只是供您参考

<id>xpto</id>是一个XML元素,但是您将它添加到当前元素中,就像它是一个文字字符串一样。执行此操作时,计算机不会认为您正在向主元素添加新的子元素,因此它会将其转义(稍后解释)

我发布的代码调用XElement.Parse(string),它将使用您的seralized xml字符串,并尝试从中生成有效的XElement


&lt;<转义序列,而&gt; ><的转义序列。

您的XML解析器转义>\n的原因是因为这些字符具有特殊含义,并且在XML中包含它们会改变XML的性质。

有点类似于\\是换行符的转义序列,以及\如何成为{{1}}的转义序列