簡體   English   中英

將 XML 轉換為 CSV 文件

[英]Convert XML to CSV file

我有一個像這樣的 XML 文件:

<hierachy>
    <att>
        <Order>1</Order>
        <attval>Data</attval>
        <children>
            <att>
                <Order>1</Order>
                <attval>Studyval</attval>
            </att>
            <att>
                <Order>2</Order>
                <attval>Site</attval>
            </att>
        </children>
    </att>
    <att>
        <Order>2</Order>
        <attval>Info</attval>
        <children>
            <att>
                <Order>1</Order>
                <attval>age</attval>
            </att>
            <att>
                <Order>2</Order>
                <attval>gender</attval>
            </att>
        </children>
    </att>
</hierachy>

我正在嘗試將其轉換為這樣的 CSV 文件:

Data,Studyval
Date,Site
Info,age
Info,gender

我的問題是,父名和子名都相同 - 'att''attval' 我如何告訴 Python 區分它們並給我輸出?

我試過這個:

import xml.etree.cElementTree as ET

tree = ET.parse('input.xml')
rebase = tree.getroot()

list = []

for att in rebase.findall('att'):
        name = att.find('attval').text
        for each_att in att.findall('attval'):
            try:
                val = att.find('attval').text
                print name, val
            except AttributeError:
                print name

它打印了兩次相同的東西。

不要使用findall函數,因為它會在整個樹中查找 att 標簽。 只需按從上到下的順序迭代樹並獲取其中的相關元素。

from xml.etree import ElementTree
tree = ElementTree.parse('input.xml')
root = tree.getroot()

for att in root:
    first = att.find('attval').text
    for subatt in att.find('children'):
        second = subatt.find('attval').text
        print('{},{}'.format(first, second))

這使:

$ python process.py 
Data,Studyval
Data,Site
Info,age
Info,gender

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM