您應該做的第一件事是確保您的xml文件爲lxml格式正確。如果整個文檔不包含在整個「body」標籤中,則lxml解析器將失敗。我可以提出這個建議:
<?xml version="1.0"?>
<body>
<a>
<b>Text I need</b>
</a>
<a>
<b>Text I need2</b>
</a>
</body>
讓我們把這個文件稱爲「foo.xml」。現在,這個數據格式解析,從LXML庫導入etree更好:
from lxml import etree as et
現在是時候來分析數據,並創建一個根對象從開始:
file_name = r"C:\foo.xml"
xmlParse = et.parse(file_name) #Parse the xml file
root = xmlParse.getroot() #Get the root
一旦根對象已經被聲明瞭,我們現在可以使用getiterator()方法迭代所有的b標籤。因爲getiterator()方法就像一個迭代器,所以我們可以使用list comprehension將元素對象保存在列表中。從這裏我們可以編輯的B標籤之間的文本:
bTags = [tag for tag in root.getiterator("b")] #List comprehension with the iterator
bTags[0].text = "Change b tag 1." #Change tag from "Text I need"
bTags[1].text = "Change b tag 2." #Change tag from "Text I need2"
xmlParse.write(file_name) #Edit original xml file
最終的輸出應該是這個樣子:
<?xml version="1.0"?>
<body>
<a>
<b>Change b tag 1.</b>
</a>
<a>
<b>Change b tag 2.</b>
</a>
</body>
什麼是「行不通」的意思嗎?你得到一個錯誤或空白的結果? – ErlVolton 2014-10-29 14:50:55
您是否閱讀過'lxml'文檔?無論如何,爲什麼要使用HTML解析器? – 2014-10-29 14:51:17
是的,我得到空字符串。我不明白xml部分的文檔。這很混亂。 – Dancia 2014-10-29 14:51:19