如何合并两个XML文件
发布时间:2020-12-16 07:56:44 所属栏目:百科 来源:网络整理
导读:我有两个xml文件,需要合并到一个xml中.这是一个例子: orginal.xml文件: employees employee id="1" name Name1 /name email email1 email /employee employee id="2" name Name2 /name email email2 email /employee/employees update.xml文件: employees
我有两个xml文件,需要合并到一个xml中.这是一个例子:
orginal.xml文件: <employees> <employee id="1"> <name> Name1 </name> <email> email1 <email> </employee> <employee id="2"> <name> Name2 </name> <email> email2 <email> </employee> </employees> update.xml文件: <employees> <employee id="2"> <name> Name2 </name> <email> email_New <email> </employee> <employee id="3"> <name> Name3 </name> <email> email3 <email> </employee> </employees> 它们应该合并到一个xml文件,如下所示: <employees> <employee id="1"> <name> Name1 </name> <email> email1 <email> </employee> <employee id="2"> <name> Name2 </name> <email> email_New <email> </employee> <employee id="3"> <name> Name3 </name> <email> email3 <email> </employee> </employees> 实际上,我想使用update.xml来更新orginal.xml: >应将update.xml中的新员工添加到original.xml中 我知道一点XSLT,但我的知识还不足以找出合并的正确XSLT.
请尝试一下:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:param name="fileName" select="'update.xml'" /> <xsl:param name="updates" select="document($fileName)" /> <xsl:variable name="updateEmployees" select="$updates/employees/employee" /> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="employees"> <xsl:copy> <xsl:apply-templates select="employee[not(@id = $updateEmployees/@id)]" /> <xsl:apply-templates select="$updateEmployees" /> </xsl:copy> </xsl:template> </xsl:stylesheet> 当您使用第一个XML作为输入并且update.xml存在于同一文件夹中时,会产生: <employees> <employee id="1"> <name> Name1 </name> <email> email1 </email> </employee> <employee id="2"> <name> Name2 </name> <email> email_New </email> </employee> <employee id="3"> <name> Name3 </name> <email> email3 </email> </employee> </employees> fileName和updates被声明为参数,因此如果更新位于名为“update.xml”以外的文件中,或者您希望直接传递更新XML,则可以在不对XSLT进行任何修改的情况下执行此操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |