我会尽量让我的问题尽可能短,并且每一个细节都需要......
我有一个包含许多XML文件的文件夹,我需要将它们合并在一起,只有一个XML,每个XML都包含其中的所有详细信息(merged.xml)
我想使用XSL转换和批处理文件进行合并
XML文件示例:
File1.xml
<?xml version="1.0" encoding="UTF-16"?>
<Errors>
<Error>
<Number>1</Number>
...Some other elements...
</Error>
</Errors>
File2.xml
<?xml version="1.0" encoding="UTF-16"?>
<Errors>
</Error>
<Number>2</Number>
...Some other elements...
</Error>
</Errors>
用于在文件上运行XSL转换的批处理文件代码:
for %%f in (File*.xml) do (
msxsl "%%~nf.xml" merge.xsl >> "merged.xml"
)
pause
我尝试了这个XSL转换:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/Errors">
<xsl:copy>
<xsl:apply-templates select="//*/Error"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
但是输出(merged.xml)文件是:
<?xml version="1.0" encoding="UTF-16"?>
<Errors>
<Error>
<Number>1</Number>
...Some other elements...
</Error>
</Errors>
<?xml version="1.0" encoding="UTF-16"?>
<Errors>
<Error>
<Number>2</Number>
...Some other elements...
</Error>
</Errors>
所需的(merged.xml)文件是:
<?xml version="1.0" encoding="UTF-16"?>
<Errors>
<Error>
<Number>1</Number>
...Some other elements...
</Error>
<Error>
<Number>2</Number>
...Some other elements...
</Error>
</Errors>
抱歉让它变长!!
提前致谢:) 期待你的回答
答案 0 :(得分:0)
XSLT不是使用的工具。根据您想要的结果,您只想将所有文件连接在一起,但需要注意的是,生成的文件是格式良好的XML文档。基本算法:
<?xml?>
处理说明,<Errors>
和</Errors>
标记。<?xml version="1.0" encoding="UTF-16"?><Errors>
添加到连续输出。</Errors>
附加到连续输出。使用适当的工具可以简化这些步骤:Perl,Python,et.al。
仅仅因为数据是XML并不意味着您必须使用XML工具来完成工作。