如何使用xpath或java脚本从xml中检索重复节点

z0qdvdin  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(357)

下面是我的输入xml。

<?xml version="1.0" encoding="UTF-8"?>

<Hierarchy>

<Records>

<Org_Unit_Name>ABC</Org_Unit_Name>

<Parent_Org_Unit>123</Parent_Org_Unit>

</Records>

<Records>

<Org_Unit_Name>ABC</Org_Unit_Name>

<Parent_Org_Unit>DEF</Parent_Org_Unit>

</Records>

<Records>

<Org_Unit_Name>456</Org_Unit_Name>

<Parent_Org_Unit>879</Parent_Org_Unit>

</Records>

</Hierarchy>

我只想提取重复的值。所以输出应该如下

<?xml version="1.0" encoding="UTF-8"?>

<Hierarchy>

<Records>

<Org_Unit_Name>ABC</Org_Unit_Name>

<Parent_Org_Unit>123</Parent_Org_Unit>

</Records>

<Records>

<Org_Unit_Name>ABC</Org_Unit_Name>

<Parent_Org_Unit>DEF</Parent_Org_Unit>

</Records>

我在xpath/xslt中尝试了前面的轴,但是没有用,在java脚本中也是唯一的(false),但是我无法检索预期的输出。请指导我如何前进。
当做,
阿穆克塔

bmvo0sr5

bmvo0sr51#

假设“复制”是指 Records 具有相同 Org_Unit_Name 值,可以使用muenchian分组的变体:
xslt 1.0版

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:key name="Records-by-Org_Unit_Name" match="Records" use="Org_Unit_Name" />

<xsl:template match="/Hierarchy">
    <xsl:copy>
        <xsl:copy-of select="Records[count(key('Records-by-Org_Unit_Name', Org_Unit_Name)) > 1]"/>
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

相关问题