簡體   English   中英

從 Excel 創建動態嵌套 xml

[英]creating dynamic nested xml from Excel

我正在嘗試將 Excel 轉換為嵌套的 XML,但未能按預期成功。

這是我的代碼。

import openpyxl
import xml.etree.ElementTree as etree

# reading data from the source, xls
wb1 = openpyxl.load_workbook(filename='C:\GSH\parent_child.xlsx')
ws1 = wb1.get_sheet_by_name('Sheet1')
row_max = ws1.max_row

# creating xml tree structure
root = etree.Element('Hierarchy')

# iterating through the xls and creating children based on the condition
for row_values in range(2, row_max+1):
    parent = etree.SubElement(root, 'parent')
    parent.text = ws1.cell(column=1, row=row_values).value
    root.append(parent)
    if (ws1.cell(column=1, row = row_values).value == ws1.cell(column=2, row = row_values-1).value):
        print("------Inside if condition")
        print(ws1.cell(column=2, row=row_values).value)
        child = etree.SubElement(parent, 'child')
        child.text = ws1.cell(column=2, row=row_values).value
        parent.append(child)
        print("-------Inside if condition")
    tree = etree.ElementTree(root)

tree.write('C:\GSH\gsh.xml')

我得到這樣的 XML..

在此處輸入圖片說明

但是,我的 XML 應該是這樣的。

在此處輸入圖片說明

任何建議,請。

在此處輸入圖片說明

以上是我正在處理的源 XLS。

您可以設置變量名稱而不是父子。 此代碼只是您列表的一部分,看起來很棘手但工作正常。 d[child[i]].text = " "只顯示標簽的兩邊。 要使用字典使 var 循環,請參閱

import xml.etree.ElementTree as ET

India = ET.Element('India')  # set root
parent = ['India', 'Telangana', 'Telangana', 'Telangana','Nalgonda']  # parent list
child = ['Telangana', 'Cyberabad', 'Warangal','Nalgonda','BusStation']  # child list

d = {}  # use dictionary to define var in loop
d['India'] = India

for i in range(len(child)):

    for k, v in d.items():
        if k == parent[i]:
            pa = v
            break

    d[child[i]] = ET.SubElement(pa, child[i])
    d[child[i]].text = " "  # to get both side of tags

tree = ET.ElementTree(India)
tree.write('gsh.xml')

# <India>
# <Telangana>
# <Cyberabad> </Cyberabad>
# <Warangal> </Warangal>
# <Nalgonda>
# <BusStation> </BusStation>
# </Nalgonda>
# </Telangana>
# </India>

暫無
暫無

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

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