如何在 xml 文件中查找重复的 id 条目

如何在 xml 文件中查找重复的 id 条目

如何快速缩小 xml 文件中重复的 id 条目数,例如:

<entry id="A">...
<entry id="B">...
<entry id="A">...

并输出它们

id="A" dup 2 times

只是想让你知道我是一个完全的菜鸟,这意味着我甚至不知道如何运行任何代码,所以如果你有这个问题的代码,你至少可以告诉我运行它所需的软件名称,我会从那里查找它。

答案1

下面是一个可以实现该功能的 XSLT 2.0 样式表:

<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <out>
    <xsl:for-each-group select="//entry" group-by="@id">
      <xsl:if test="count(current-group()) > 1">
        <duplicate id="{current-grouping-key()}" count="{count(current-group())"/>
      </xsl:if>
    </xsl:for-each-group>
  </out>
</xsl:template>

</xsl:transform>

您可以通过(例如)从 SourceForge 下载 Saxon-HE,然后运行(从命令行)来运行它

java -jar saxon9he.jar -s:input.xml -xsl:count-dupes.xsl

其中 input.xml 是您的 XML 输入,count-dupes.xsl 是样式表。

我已将输出格式化为 XML,但当然您可以根据需要更改输出格式。

相关内容