在c#中将特殊字符写入xml

时间:2011-08-09 13:07:35

标签: c# .net xml

我正在使用LINQ to XML将元素写入xml文档。我遇到的问题是我尝试写入xml元素的字符串包含诸如&,<,>之类的字符。和“。

当我使用以下代码将其写入xml时,

XElement Config= new XElement("Student", new XElement("ID", "><&\""));

我没有将这些特殊字符写入XML文档。相反,我会得到像&lt; for < and &gt; for >这样的东西。如何在将这些字符写入xml时将其转义?

由于

3 个答案:

答案 0 :(得分:4)

XDocument逃脱了它们。

<Student><ID>><&"</ID></Student>不是格式良好的XML。

生成XDocument的格式良好的版本是:

<Student>
  <ID>&gt;&lt;&amp;"</ID>
</Student>

您可以使用此代码(使用CDATA):

XElement Config = new XElement("Student", new XElement("ID", new XCData("><&\"")));

输出:

<Student>
  <ID><![CDATA[><&"]]></ID>
</Student>

答案 1 :(得分:1)

如果你想要实现的是这样的文件:

<Student>
  <ID>><&\</ID>
</Student>

然后你做错了。它不是一个格式良好的XML,也没有解析器可以使用它。

答案 2 :(得分:1)

如果您不希望使用转义字符输出它,请使用StringBuilder或StreamWriter。

事实上,你正在尝试生成不能被任何XML阅读器解析的错误XML,所以实际上没有意义 - 除非你故意试图打破别人的XML处理!