java - 如何使用 xpath 或 java 脚本从 XML 中检索重复节点
问题描述
下面是我的输入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 脚本中没有用和唯一(错误),但我无法检索预期的输出。请指导我如何继续前进。
问候,
阿穆克塔
解决方案
假设“重复”表示Records
具有相同Org_Unit_Name
值的元素,您可以使用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>
推荐阅读
- botframework - 如何将机器人安装到微软团队(nodejs)
- mobile - 如何使用 Appium 自动化已安装的 ios 应用程序
- android - 如何在editText中输入小数?
- php - 作为对象标准类从 Web 服务中单独接收
- android - 添加 google_maps_flutter 后“flutter build apk”命令失败
- javascript - javaScript中setter的优点是什么
- wso2 - EI 中的错误 - 系统可能不稳定:HTTPS ConnectingIOReactor 遇到运行时异常
- c# - 在方法完成后将事件添加到另一个类
- javascript - 样式绑定使应用程序不再出现在 Vue 中
- php - 如何从 SQL 返回的结果中选择结果