2015-10-20 91 views
0

我一直在嘗試在python中的多個.xml文件中拆分一個大的.xml文件幾天。事情是我還沒有真正成功。所以在這裏我要求你的幫助。在一個更大的.xml文件中拆分一個大的.xml文件(python)

我大.xml文件看起來是這樣的:

<Root> 
    <Testcase> 
      <Info1>[]<Info1> 
      <Info2>[]<Info2> 
    </Testcase> 
    <Testcase> 
      <Info1>[]<Info1> 
      <Info2>[]<Info2> 
    <Testcase> 
    ... 
    ... 
    ... 
    <Testcase> 
      <Info1>[]<Info1> 
      <Info2>[]<Info2> 
    <Testcase> 
</Root> 

它擁有超過2000名兒童和我想要做的是分析在較小的.xml文件此.xml文件和分裂,每個100個孩子。這將導致20個新的.xml文件。

我該怎麼做?

謝謝!

LE:

我試圖解析使用xml.etree.ElementTree

import xml.etree.ElementTree as ET 
file = open('Testcase.xml', 'r') 
tree = ET.parse(file) 

total_testcases = 0 

for Testcase in root.findall('Testcase'): 
    total_testcases+=1 

nr_of_files = (total_testcases/100)+1 

for i in range(nr_of_files+1): 
    tree.write('Testcase%d.xml' % (i), encoding="UTF-8") 

的東西是.xml文件,我不知道如何具體只得到測試用例和複製他們到另一個文件...

+0

添加與*數據的XML文件*的樣本。 –

+0

我google了一下,發現了這個:http://stackoverflow.com/questions/7336694/how-to-split-an-xml-file-the-simple-way-in-python。這似乎可以解決你的問題。 –

+0

我也看過那篇文章,但我不太明白它是如何工作的,也沒有說它是如何用第一棵樹的信息創建另一個文件的。此外,@ bad_keypoints,.xml中的信息是相關的,它看起來像我描述的。 – Ciobby

回答

1

其實,root.findall('Testcase')將返回一個「Testcase」子元素列表。 那麼需要做的是:

  1. 創建根
  2. 添加子元素根。

這裏是例子:

>>> tcs = root.findall('Testcase') 
>>> tcs 
[<Element 'Testcase' at 0x23e14e0>, <Element 'Testcase' at 0x23e1828>] 
>>> len(tcs) 
2 
>>> r = ET.Element('Root') 
>>> r.append(tcs[0]) 
>>> ET.tostring(r, 'utf-8') 
'<Root><Testcase>\n   <Info1>[]</Info1>\n   <Info2>[]</Info2>\n  </Testcase>\n  </Root>' 
+0

感謝@Rainman的回答,但是我怎樣才能寫入文件而不是使用ET.tostring(r,'utf-8')? – Ciobby

+0

創建xml文件並將ET.tostring的返回寫入文件。 (「test.xml」,「w +」)作爲f: f.write(ET.tostring(r,'utf-8')) – Rainman

+0

謝謝@Rainman,我設法做到了。謝謝你們! :d – Ciobby

相關問題