使用java基于属性值追加或替换XML元素
我有两个结构相似的XML文件,我希望根据其属性Id值将它们合并为一个文件。如果Id值已经存在,代码应该替换其他属性,否则只需附加一个元素。您能建议我使用哪个java XML解析器库吗 因此,如果有人能给我举个例子,我将不胜感激。提前谢谢 XML A:使用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"/> <
<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了解不多,我自己经常在工作中使用错误的工具,因为我没有时间学习如何使用正确的工具。但我不会花时间教别人如何使用错误的工具!