java - 使用 XPath 将元素保留在文本中

标签 java html xml xpath

我有一个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'] 返回一个节点集,但显然您可以将其转换为一个字符串,该字符串返回第一个节点的串联文本内容在节点集中,剥离所有标记。

要将结果节点的内容打印为标记,您需要执行以下操作:

  1. 以节点集形式检索表达式结果。节点集的实现类型取决于 XPath 引擎,例如可以是 DOM 节点列表。
  2. 将节点序列化为 XML 片段。这当然取决于 API 节点集和 XPath 引擎。 XSLT 可以用于此目的,但它也可能像在节点实现上调用 toString() 一样简单。

关于java - 使用 XPath 将元素保留在文本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38011439/

相关文章:

XML 与 JSON 来表示数据库数据

java - 如何在 iText 中创建 "reply"到便笺注释

Java:永远等待 Thead

java - 在 JSP 中上传多个文件

java - 为什么 Flux<String> 在通过 ServerResponse 返回时会折叠成单个 String,除非每个 String 元素都以 "\n"终止?

java - 如何连接两个布局java android?

html - html 中的代码不会在我的 div 之一下

javascript - 替换已弃用的 `keypress` DOM 事件

javascript - 在整个页面中使用 JS 变量(来自 HTML 表单)

java - 来自 xml 文件的 vsdx (visio) 类图生成器,Java