使用java基于属性值追加或替换XML元素

使用java基于属性值追加或替换XML元素,java,xml,xslt-3.0,Java,Xml,Xslt 3.0,我有两个结构相似的XML文件,我希望根据其属性Id值将它们合并为一个文件。如果Id值已经存在,代码应该替换其他属性,否则只需附加一个元素。您能建议我使用哪个java XML解析器库吗 因此,如果有人能给我举个例子,我将不胜感激。提前谢谢 XML A: <Returns> <Return Id="1001" MetadataFields="Code" MandatoryFields="Code1"/> <

我有两个结构相似的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>


谢谢你的回答。你能建议我如何用java代码实现这个吗?我对XSLTI了解不多,我自己经常在工作中使用错误的工具,因为我没有时间学习如何使用正确的工具。但我不会花时间教别人如何使用错误的工具!