双重转义 XML 文件

发布于 2024-09-26 05:17:52 字数 678 浏览 4 评论 0原文

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

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

我想“双重转义”所有特殊字符,这样它将导致 &amp;lt;&amp;amp;< /code> 带有简单的 linq to xml 语句。 xml 应该仍然有效,只是需要转义值。 有人知道这个问题的解决方案吗?

生成的 xml 应如下所示:

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

提前致谢

I have a simple xml file like this one:

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

I would like to "double escape" all special chars so it will result in &lt; and &amp; with a simple linq to xml statement. The xml should still be valid, only the values need to be escaped.
Anyone knows a solution for this?

The resulting xml should look like this:

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

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吻风 2024-10-03 05:17:52

如果您知道文本节点中只有编码实体,则只需将 & 的每个实例替换为 & 即可。

尽管我不明白为什么你需要做这样的事情。

If you know that you only have encoded entities in the text nodes, you could simply replace every instance of & with &.

Though why you would even need to do such a thing escapes me.

满意归宿 2024-10-03 05:17:52

元素、属性或声明的名称中不能包含 &,因此唯一可能的位置是在值(文本节点和属性值)中。由于这正是您想要进行替换的位置,因此简单的盲目替换就是正确的选择。是否应该使用 string.Replace() 或流方法取决于用法和整个正文的大小。

我同意其他人的看法,这味道很糟糕。

You can't have & in the name of an element, attribute, or declaration so the only possible place for it is in the values (text nodes and attribute values). Since this is precisely where you say you want to do this replace, then a simple blind replace is the way to go. Whether you should use string.Replace() or a streaming method depends on usage and the size of the entire body.

I agree with everyone else, this smells bad.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文