Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并多个XML文件_Python_Xml_Merge_Xml Parsing_Elementtree - Fatal编程技术网

Python 合并多个XML文件

Python 合并多个XML文件,python,xml,merge,xml-parsing,elementtree,Python,Xml,Merge,Xml Parsing,Elementtree,我有一个xml文件目录,我正试图将它们合并成一个大的xml文件 full = ET.Element('dataset') for filename in glob.glob(os.path.join(path, '*.xml')): tree = ET.parse(filename, parser=xmlp) root = tree.getroot() for pair in root: #root.iter('pair'): full.append(pa

我有一个xml文件目录,我正试图将它们合并成一个大的xml文件

full = ET.Element('dataset')
for filename in glob.glob(os.path.join(path, '*.xml')):
    tree = ET.parse(filename, parser=xmlp)
    root = tree.getroot()
    for pair in root: #root.iter('pair'):
        full.append(pair)
我尝试了上面的代码,得到了这个小错误:

ParseError:分析已完成:第330行第0列

问题是,只有第一个文件被附加到新的xml文档中,如何避免这种情况?还是有更好的合并方式?(结构相同)

编辑:它们属于以下结构:

<dataset>
<pair>
<t1></t1>
<t2></t2>
</pair>
...
</dataset>

...
更新:使用XML复制编辑器,无法打开未知编码MS932,即使它在ISO-8859-1中。在python中尝试使用lxml而不是xml打开时遇到的相同错误。手动重新创建了一个新的xml,这不是一个真正的解决方案,但很好


谢谢

您的代码对我的简单xml文件起到了作用。我认为您的xml文件可能格式不正确。也许它们通常是有效的,但在某个地方有错误?我添加了结构以便您可以看到。在任何情况下都有解决方法吗?您的示例结构看起来不错。如何使用
xmllint
验证xml文件是否有效?e、 g.
xmllint--noout*.xml
。如果全部正常,则不会打印输出。或者,您可以一次打印一个正在解析的文件,以找出是哪一个文件导致了问题。在不知道xml解析错误有多严重的情况下,很难说什么样的解决方法是可行的。我没有xmllint,但我通过验证前两个文件(解析错误出现在解析第一个文件之后),并且没有发现错误。为什么我认为我会得到错误,因为它是通过迭代所有对来完成的(指第一个)然后不管什么原因都不会继续到第二个文件