双转义XML文件

时间:2010-10-04 18:47:40

标签: c# .net linq-to-xml

我有一个像这样的简单xml文件:

<xml>
  <check>
    <a>b&lt;</a>
    <b>
      <test>asdf</test>
    </b>
    <test>jj&amp;j</test>
    </check>
</xml>

我想“双重转义”所有特殊字符,因此它会导致&amp;lt;&amp;amp;带有简单的linq到xml语句。 xml应该仍然有效,只需要转义值。 有人知道解决方案吗?

生成的xml应如下所示:

<xml>
  <check>
    <a>b&amp;lt;</a>
    <b>
      <test>asdf</test>
    </b>
    <test>jj&amp;amp;j</test>
    </check>
</xml>

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您知道文本节点中只有编码实体,则只需用&替换&amp;的每个实例。

虽然为什么你甚至需要做这样的事情逃避我。

答案 1 :(得分:1)

您不能在元素,属性或声明的名称中包含&,因此唯一可能的位置是值(文本节点和属性值)。因为这正是你想要做的替换,所以简单的盲目替换是要走的路。是否应该使用string.Replace()或流媒体方法取决于使用情况和整个身体的大小。

我同意其他人的意见,这闻起来很糟糕。