我有以下XML源文件。Python XML解析器不能獲取所有文本
<a>
<b>
first
</b>
second
</a>
我試着用Python來解析它來獲取文本出來,整個文本像firstsecond
結合爲一個字符串。爲此,我有以下腳本
import xml.etree.ElementTree as ET
top = ET.fromstring(myXml)
for a in top.iter('a'):
s = ''
if a.text:
s += a.text
else:
for b in a.iter('b'):
if b.text:
s += b.text
print s
但腳本只是打印第一個元素first
。第二種似乎不知所措。它可以在<a></a>
或<b></b>
中都有字符串。
<a>
firstsecond
</a>
打印firstsecond
<a>
<b>
first
</b>
<b>
second
</b>
</a>
打印firstsecond
我缺少的東西走出第二個字符串時,其在同一<a></a>
爲<b></b>
?或者這是不可能與etree,我必須重新包裝它? XML是給出的,因此我將無法更改源代碼。
感謝您的任何幫助。
謝謝,這工作。但是我只是發現了tostring函數使它更容易,然後我不依賴於它是在子元素之前還是之後。 –
@Memnon是的,這是一個幫助功能,收集所有的文字和尾巴。但是大多數XML文檔看起來像我上面很好格式化的例子,你不需要尾部,這就是爲什麼這個概念存在。 –
我絕對更喜歡格式良好的XML,但這就是我得到它的方式。我也在考慮在解析之前重新格式化它,但這也很煩人。 –