Xml XPath筛选子节点
我有一个包含以下信息的xml,我正在使用Xpath解析它Xml XPath筛选子节点,xml,xpath,Xml,Xpath,我有一个包含以下信息的xml,我正在使用Xpath解析它 <root> <a> <b></b> <c></c> <d></d> </a> <a> <b></b> <c></c> <d></d> </a> </root>
<root>
<a>
<b></b>
<c></c>
<d></d>
</a>
<a>
<b></b>
<c></c>
<d></d>
</a>
</root>
我的目标是获取标记“a”的节点列表,在每个包含“b”和“c”的子节点列表中(等等,过滤掉“d!”),我目前正在做的是使用“/root/a”获取包含所有“a”、“b”和“c”的节点,然后去掉“c”,我的目标是在XPath中进行过滤,而不是使用额外的代码,还有什么我能做的吗?谢谢 您可以通过使用下面的模式复制所有内容来过滤掉一个元素,只需截取要过滤掉的元素即可
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="a/d"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这是因为特殊模板比常规模板具有更高的优先级。因此,第二种方法适用于除
a
下面的d
之外的所有元素。第一个模板什么也不做,即忽略元素。< /P>如果我的(或者任何其他的未来答案)帮助你,请考虑通过点击答案左边的箭头来标记其中一个。这显示了哪个答案对您帮助最大,并为答案的作者(以及您!)分配了声誉分数。抱歉,新到这里,不知道传统,对您的答案添加了一些评论,帮助我们进行更多对话,谢谢!嗨,Patrick,谢谢你的帮助,我正在从一个Web服务器接收有效负载。我不认为我可以更改xml结构,将xml复制到一个新的速度太昂贵了,我正在进行的项目对性能至关重要,所以我正在寻找一种方法,一次过滤掉父标记中的标记。@user1409920这是“一次过滤”-我不理解你的评论,抱歉。对不起,对于英语,我想我可以做一些更详细的说明,我目前正在做的是使用“/root/a”获取包含所有“a”、“b”和“c”的节点,然后去掉“c”,我的意思是有没有一种方法可以在XPath中进行过滤,而不是使用额外的代码来进行过滤?thanks@user1409920请更新您的问题。我很难在不确切知道你们已经发生了什么转变的情况下给出答案。