我有一个XML文件,每个文件包含一些信息,它还包含元素<namespace:description></namespace:description>
中封闭的自身描述。该描述将插入 HTML 网页并上传到网络。
问题是,描述元素中有其他 HTML 元素,我想将它们保留在那里,以便可以格式化文本,但 XPath 会转义所有这些元素并仅返回它们的文本。
<namespace:descr>Some <i>nice</i> description</namespace:descr>
我尝试了此 XPath 查询的变体://*[local-name()='descr']
(我不太擅长 XPath)
还尝试过类似//*[local-name()='descr']//*[not(descendant::*[self::p or self::i])]
的东西发现于this answer ,但这对我不起作用。
所以我的问题:使用 XPath 查询后是否有某种方法可以将 XML/HTML 元素保留在文本中?
最佳答案
XPath 表达式的返回值可以是字符串、数字、 boolean 值或节点集。这些类型中的每一种都可以转换为原始类型之一。
表达式 //*[local-name()='descr']
返回一个节点集,但显然您可以将其转换为一个字符串,该字符串返回第一个节点的串联文本内容在节点集中,剥离所有标记。
要将结果节点的内容打印为标记,您需要执行以下操作:
- 以节点集形式检索表达式结果。节点集的实现类型取决于 XPath 引擎,例如可以是 DOM 节点列表。
- 将节点序列化为 XML 片段。这当然取决于 API 节点集和 XPath 引擎。 XSLT 可以用于此目的,但它也可能像在节点实现上调用
toString()
一样简单。
关于java - 使用 XPath 将元素保留在文本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011439/