2012-02-21 159 views
3

我有一个86 xml文件的目录,它具有相同的列和格式,我需要将它们合并到一个大的xml文件中。我非常缺乏经验与批处理文件,我的第一次尝试是简单地添加一个文件文本到下一使用...使用批处理文件将多个xml文档合并为一个大文档

FOR %%i IN (directory\*.001) DO type %%i >> directory\combo_file.001 

不幸的是,这个当我尝试在Excel中打开它创建了一个解析错误。我会想象这是因为许多字段和标签重复。有谁知道我可以如何实现这一目标?我只需要在Excel中打开这个文件,所以如果这是一个选项,我会开放将文件转换为CSV。

任何帮助非常感谢,谢谢!

+0

如果你这样做,它不会去掉一个xml文件。多个XML头,没有根,可能会破坏名称空间。你需要知道xml的东西来做到这一点。可能更容易打开Excel中的每一个,然后将所需的数据提取到一个带有某种宏的Excel工作表中。 – 2012-02-21 13:04:18

回答

-1

问题是XML有一个单独的起始标记,例如:<?xml version="1.0" encoding="UTF-8"?>这将在合并的文档上重复。另外,如果有一个根标签包含所有其他标签,则合并您会多次包含根标签。

我认为在批处理shell中,如果可能的话,甚至使用强大的shell和像Linux/Unix(find,grep等)那样的命令将会非常困难。

我会用一个简单的程序(比如说VBA)来做到这一点。

编辑:我发现在Excel中你可以导入多个XML文件。你必须去发展选项卡(显示它,如果它隐藏)。然后在XML组中选择“导入”并选择多个XML文件。这应该工作。

+0

感谢您的建议,我只是试图将所有文件导入到excel中,正如您所说的,但不幸的是,我收到错误“无法找到与此数据对应的XML映射”。 – tob88 2012-02-21 13:22:23

+0

当您选择多个要导入的XML数据文件时,会发生此问题,并且Excel无法为其中一个文件找到匹配的XML映射。您可以先导入适当的模式,然后再次导入文件。 – vulkanino 2012-02-21 13:24:49

0
<html xmlns:xi="http://www.w3.org/2001/XInclude"> 
<head> 
<title>Book Title</title> 
</head> 
<body> 
<xi:include href="chap1.xml"/> 
<xi:include href="chap2.xml"/> 
<xi:include href="chap3.xml"/> 
</body> 
</html> 

当您使用xslt处理这一个文件时,它看起来像是所有组合的文件。

4

下面是一个快速批处理命令,它将当前目录中的所有xml文件合并到一个文件CombineXML.bat中。它使用新的根节点包装所有XML文件(“<root>”)。

但是,对于您的情况,您可能不希望将此新图层引入到XML中。 如果你只是在单个区域查看XML(例如:在网页浏览器中),那么这就可以工作。

--CombineXML.bat-- 
@echo on 
rem ==clean up== 
erase %0.xml 
rem ==add the root node== 
echo ^<root^> > %0.txt 
rem ==add all the xml files== 
type *.xml >> %0.txt 
rem ==close the root node== 
echo ^<^/root^> >> %0.txt 
rem ==rename to xml== 
ren %0.txt %0.xml 
2

一个非常简单的方法将做一个简单的复制:

副本* .XML new.xml

创建将所有的XML文件中的new.xml文件合并在一起。你可以使用相同的命令创建一个BAT文件

+0

我是从Windows命令提示符执行的。工作过一种享受。谢谢 :) – TryHarder 2016-09-19 05:03:03

相关问题