XPath select 元素但在结果中排​​除子元素

XPath select element but exclude children in the result

是否可以创建一个选择元素但删除一些子元素的 XPath?我的 RSS 提要如下所示:

<rss>
  <channel>
    <title>My Feed</title>
    <item>...</item>
    <item>...</item>
    <item>...</item>
  </channel>
</rss>

我想要一个 XPath 表达式,它将 return 以下 XML:

<rss>
  <channel>
    <title>My Feed</title>
  </channel>
</rss>

就是上面的 XML,但没有 <item> 标签。这可能与 XPath 相关吗?如果可以,XPath 表达式是什么样的?

您的 XPath 表达式 selects 源树中的节点(将其视为返回对这些节点的引用)。这些节点仍在原始树中,您可以从 selected 节点导航到它们的祖先、后代和兄弟节点。

对于使用 XPath 到 select 节点的应用程序来说,然后显示以该节点为根的整个树是很常见的。应用程序导航到这些节点的祖先或兄弟节点的情况不太常见(但同样可行)。

所以第一件事是:结果中没有 children。您看到 children 是因为发出 XPath 表达式的应用程序选择从返回的节点导航到它们的 children.

如果您想保留一些 children 并删除其他的,那么您正在进行转换而不仅仅是 selection,因此 XPath 不再是完成这项工作的工具:您需要 XSLT或 XQuery。