如何在 .NET 中轻松取消转义 XML 实体

2024-05-09

我有一些代码返回 XMLNode 的 InnerXML。

该节点可以只包含一些文本(带有 HTML)或 XML。

例如:

<XMLNode>
    Here is some &lt;strong&gt;HTML&lt;/strong&gt;
<XMLNode>

or

<XMLNode>
    <XMLContent>Here is some content</XMLContnet>
</XMLNode>

如果我得到 InnerXML<XmlNode>HTML 标签作为 XML 实体返回。

我无法使用 InnerText,因为我需要能够获取 XML 内容。所以我真正需要的是一种取消转义 HTML 标签的方法,因为我可以检测它是否是 XML 并采取相应的行动。

我想我可以使用 HTMLDecode,但是这会解码所有 XML 编码的实体吗?

Update:我想我在上面有点漫无目的,所以这里有一个澄清的场景:

我有一个 XML 文档,如下所示:

<content id="1">
    <data>&lt;p&gt;A Test&lt;/p&gt;</data>
</content id="2">
<content>
    <data>
        <dataitem>A test</dataitem>
    </data>
</content>

If I do:

XmlNode xn1 = document.SelectSingleNode("/content[@id=1]/data");
XmlNode xn2 = document.SelectSingleNode("/content[@id=2]/data");

Console.WriteLine(xn1.InnerXml);
Console.WriteLine(xn2.InnerXml);    

xn1 将返回

 &lt;p&gt;A Test&lt;/p&gt;

xn2将返回<dataitem>A test</dataitem>

我已经在检查返回的内容是否是 XML(在 xn2 的情况下),所以我需要做的就是取消转义&lt;xn1 中的等。

HTMLDecode 可以做到这一点,但我不确定它是否适用于所有情况。所以问题仍然是 HTMLDecode 是否会处理所有可能的实体,或者是否有一个类可以为我做这件事。


为什么不将它们插入为 ?您可以避免将 xml 和自定义标记内容与此混合...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 .NET 中轻松取消转义 XML 实体 的相关文章

随机推荐