微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Java根据属性值附加或替换XML元素

如何解决使用Java根据属性值附加或替换XML元素

我有两个结构相似的XML文件,希望根据其属性ID值合并到一个文件中。如果Id值已经存在,则代码应替换其他属性,否则仅附加一个元素。您能建议我可以使用哪个Java XML解析器库吗?

因此,我感谢任何给我提供示例示例的人。预先感谢。

XML A:

<Returns>
   <Return Id="1001" Metadatafields="Code" MandatoryFields="Code1"/>
</Returns>

XML B:

<Returns>
   <Return Id="1000" Metadatafields="BankCode" MandatoryFields="BankCode"/>
   <Return Id="1001" Metadatafields="BankCode" MandatoryFields="BankCode1"/>
   <Return Id="1002" Metadatafields="BankCode" MandatoryFields="BankCode2"/>
   <Return Id="1003" Metadatafields="BankCode" MandatoryFields="BankCode3"/>
</Returns>

输出

<Returns>
   <Return Id="1000" Metadatafields="BankCode" MandatoryFields="BankCode"/>
   <Return Id="1001" Metadatafields="Code" MandatoryFields="Code1"/>
   <Return Id="1002" Metadatafields="BankCode" MandatoryFields="BankCode2"/>
   <Return Id="1003" Metadatafields="BankCode" MandatoryFields="BankCode3"/>
</Returns>

解决方法

在XSLT 3.0中:

<xsl:template name="xsl:initial-template">
<Records>
  <xsl:merge>
    <xsl:merge-source for-each-source="doc('A.xml'),doc('B.xml')"
                  streamable="yes"
                  select="Returns/Return">
      <xsl:merge-key select="@Id" order="ascending"/>
    </xsl:merge-source>
    <xsl:merge-action>
      <xsl:copy-of select="current-merge-group()[last()]"/>
    <xsl:merge-action>
  </xsl:merge>
</Records>
</xsl:template>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。