双重转义 XML 文件
我有一个像这样的简单 xml 文件:
<xml>
<check>
<a>b<</a>
<b>
<test>asdf</test>
</b>
<test>jj&j</test>
</check>
</xml>
我想“双重转义”所有特殊字符,这样它将导致 &lt;
和 &amp;< /code> 带有简单的 linq to xml 语句。 xml 应该仍然有效,只是需要转义值。 有人知道这个问题的解决方案吗?
生成的 xml 应如下所示:
<xml>
<check>
<a>b&lt;</a>
<b>
<test>asdf</test>
</b>
<test>jj&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 <
and &
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<</a>
<b>
<test>asdf</test>
</b>
<test>jj&j</test>
</check>
</xml>
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您知道文本节点中只有编码实体,则只需将
&
的每个实例替换为&
即可。尽管我不明白为什么你需要做这样的事情。
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.
元素、属性或声明的名称中不能包含
&
,因此唯一可能的位置是在值(文本节点和属性值)中。由于这正是您想要进行替换的位置,因此简单的盲目替换就是正确的选择。是否应该使用 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 usestring.Replace()
or a streaming method depends on usage and the size of the entire body.I agree with everyone else, this smells bad.