我搜索了很多,但没有找到一个内置的 .Net 方法可以仅转义特殊的 XML 字符:<
, >
, &
, '
和 "
,如果它不是一个标记。
例如,考虑以下文本:
Test& <b>bold</b> <i>italic</i> <<Tag index="0" />
我希望你能够将其翻译为:
Test& <b>bold</b> <i>italic</i> <<Tag index="0" />
请注意,标签没有被转义。我基本上需要将这个值设置为
XmlElement
的InnerXML
,因此,这些标签必须被保留。我已经研究过实现自己的解析器,并使用
StringBuilder
尽可能地进行优化,但这可能会变得非常麻烦。我还知道哪些标签是可接受的,这可能会简化事情(仅限于:br、b、i、u、blink、flash、Tag)。此外,这些标签可以是自闭合标签。
(e.g. <u />)
或者容器标签
(e.g. <u>...</u>)
<b>foo <i>bar</b> really <br></i>
这样。如果你想自己处理,那么你会有很多乐趣。作为一种选择,考虑使用HtmlAgilityPack将HTML解析成合理的树,并仔细地将所有节点插入XML中。 - Alexei Levenkov< 3
不是一个有效的起始标签,所以你可以弄清楚这一点。但你的观点仍然成立,<
和>
被转义以消除解析中的歧义。在某些情况下,任何合理的解析器都会选择一条路径,而你可能希望选择另一条路径。 - Mike Park<3 but >1
。然而,只允许使用已知的标签列表会使它变得容易得多。 - Bobson