<p>如果我正确地理解了您的问题,那么您需要遍历XML树,所以您可能希望有一个递归函数来完成这个任务。如下所示:</p>
<pre><code>import pandas as pd
import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()
def f(elem, result):
result[elem.tag] = elem.text
cs = elem.getchildren()
for c in cs:
result = f(c, result)
return result
d = f(root, {})
df = pd.DataFrame(d, index=['values']).T
df
</code></pre>
<p>输出:</p>
^{pr2}$
<p><strong>更新:</strong>
我们需要在多个XML文件上执行此操作。我添加了另一个类似于原始文件的ColA,ColB行替换为</p>
<pre><code><ColA>DEF</ColA>
<ColB>456</ColD>
</code></pre>
<p>代码如下:</p>
<pre><code>def f(elem, result):
result[elem.tag] = elem.text
cs = elem.getchildren()
for c in cs:
result = f(c, result)
return result
result = {}
for file in glob.glob('*.xml'):
tree = ET.parse(file)
root = tree.getroot()
result = f(root, result)
df = pd.DataFrame(result, index=['values']).T
df
</code></pre>
<p>以及输出:</p>
<pre><code> 0 1
Transmission \n \n
TransmissionBody \n \n
level1 \n \n
level2 \n \n
level3 \n \n
level4 \n \n
level5 \n \n
level6 \n \n
ColA ABC DEF
ColB 123 456
</code></pre>