【问题标题】:How to retrieve duplicate nodes from XML using xpath or java script如何使用 xpath 或 java 脚本从 XML 中检索重复节点
【发布时间】:2020-12-30 18:34:17
【问题描述】:

下面是我的输入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),但我无法检索预期的输出。请指导我如何继续前进。

问候,

阿穆克塔

【问题讨论】:

  • 您的 XML 示例格式不正确。
  • 您需要准确地说明什么是“重复”。给定的示例可以用多种方式解释。
  • 您标记了 [java] 和 [groovy],但您的主题声称“xpath”或“java script”

标签: java xml xslt groovy duplicates


【解决方案1】:

假设“重复”是指具有相同Org_Unit_Name 值的Records 元素,您可以使用Muenchian grouping 的变体:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2015-08-22
    相关资源
    最近更新 更多