2013-07-07 49 views
0

這是我試圖解析的xml文件。該文件沒有根標籤。在python中解析xml文件時出錯

<data txt="some0" txt1 = "some1" txt2 = "some2" > 
    <data2> 
      < bank = "SBI" bank2 = "SBI2" > 
    <data2> 
    <data3> 
      <branch = "bang1" branch = bang"2" > 
    <data3> 
<data> 

我的腳本包含下面幾行。下面的代碼可以用於解析後獲取特定的數據。

data = re.findall("<data txt=.*?</data>", re.DOTALL) 
tree = ElementTree.fromstringlist(data) 

因爲它沒有根標記,所以我不能解析這個文件。請幫助我如何解析文件是否沒有標籤?

+0

爲什麼你首先使用正則表達式?只需解析*整個*文檔,將選擇留給ElementTree。 –

+0

@MartijnPieters:XML沒有根標籤,因此我無法解析。 – user2558589

回答

1

正如在評論中已經指出的那樣,你可以解析整個事情。如果缺少根元素是問題,則可以將該文件的內容作爲字符串獲取,然後在開始和結束處添加一個任意的根標記。

stringdata = "<myroot>%s</myroot>" % stringdata 

然後解析字符串。

編輯:

在迴應置評。

如果你有一個字符串,你會想要fromString,但你肯定會得到相同的錯誤。其他事情正在發生。試試這個...

from xml.etree import ElementTree 
stringdata = "<myroot>%s</myroot>" % stringdata 
tree = ElementTree.fromstring(stringdata) 

然後從樹上得到你需要的。

+0

@MartijnPieters:我現在在一個變量中獲得了xml數據。我試圖解析它使用上面我的兩行腳本,但它拋出一個錯誤「'模塊'對象沒有屬性'fromstringlist'」?你能幫我解析這些數據嗎? – user2558589