我有一些代码返回 XMLNode 的 InnerXML。
该节点可以只包含一些文本(带有 HTML)或 XML。
例如:
<XMLNode>
Here is some <strong>HTML</strong>
<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><p>A Test</p></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 将返回
<p>A Test</p>
xn2将返回<dataitem>A test</dataitem>
我已经在检查返回的内容是否是 XML(在 xn2 的情况下),所以我需要做的就是取消转义<
xn1 中的等。
HTMLDecode 可以做到这一点,但我不确定它是否适用于所有情况。所以问题仍然是 HTMLDecode 是否会处理所有可能的实体,或者是否有一个类可以为我做这件事。