簡體   English   中英

通過python更改多個文件的xml屬性的名稱

[英]Change name of xml attribute for multiple files via python

我想在多個文件中更改xml元素上的屬性名稱。 這些文件是圖像注釋工具的輸出。 我有1000個這樣的文件,因此那些屬性名稱的位置不是絕對的。

我的文件位於[XML FILE] [1]。

在這里我想改變

 <attribute dynamic="false" name="Multiset Column Chart with Error Bars " type="http://lamp.cfar.umd.edu/viperdata#bbox"/>

<attribute dynamic="false" name="Column Chart " type="http://lamp.cfar.umd.edu/viperdata#bbox"/>

<attribute name="Multiset Column Chart with Error Bars "/>

<attribute name="Column Chart "/>

到目前為止,我可以訪問第一個代碼中的元素

root=xmldoc.getroot()
print(root[0][0][11].attrib)

但是不確定此名稱“帶有錯誤條的多集柱形圖”將始終位於位置[0] [0] [11]。

因此,我不確定如何訪問這些特定名稱,並且可以更改名稱的值,如上所示。

任何幫助將不勝感激。

結束注

我必須刪除到源xml文件的鏈接,因為此文件是我的研究項目的一部分。

我假設您的xml文件的結構將與

<?xml version="1.0" encoding="UTF-8"?>
<viper xmlns="http://lamp.cfar.umd.edu/viper#" xmlns:data="http://lamp.cfar.umd.edu/viperdata#">
    <config>
        <descriptor name="Desc0" type="OBJECT">
            <attribute dynamic="false" name="Reflexive Bar Chart " type="http://lamp.cfar.umd.edu/viperdata#bbox"/>

等等。

您可以選擇標簽attribute並為該標簽設置屬性,如下所示:

import xml.etree.ElementTree as ET
tree = ET.parse('contents.xml').getroot()
print tree.tag, tree.text
for child in tree[0][0]:
    print child.set("name","bhansa")
    print child.attrib #just to check whether changed or not

然后將更改寫入xml文件

tree.write("file_name")

在這里有關於xml和python的良好閱讀

與bhansa解決方案略有不同。 我需要一些if else子句來檢查名稱,然后在某些情況下替換名稱。

root=xmldoc.getroot()
#print(root[0][0])
for child in root[0][0]:
    if(child.get('name') == 'Coulmn Chart with Error Bars '):
      child.set("name","Column Chart")
    print (child.attrib) #just to check whether changed or not

暫無
暫無

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

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