我試圖從XML文件中提取文本,但沒有得到我期望的結果。從xml文件中提取文本
這是XML的一個片段,我試圖分析來說明我的問題:
<texto_Quijote_I>
<bloque nombre="prologo">
<autor>
Desocupado lector: sin juramento me podrás creer que quisiera que este;
como será poner, tratando de libertad y cautiverio:
<cita_latin> Non bene pro toto libertas venditur auro.</cita_latin>
Y luego, en el margen, citar a Horacio, o a quien lo dijo. Si tratáredes
del poder de la muerte, acudir luego con:
<cita_latin>
Pallida mors aequo pulsat pede pauperum tabernas,
Regumque turres.
</cita_latin>
Si de la amistad y amor que Dios manda que se tenga al enemigo, entraros
luego al punto por la Escritura Divina, que lo podéis hacer con tantico de
curiosidad, y decir las palabras, por lo menos, del mismo Dios:
<cita_latin>Ego autem dico vobis: diligite inimicos vestros</cita_latin>.
Si tratáredes de malos pensamientos,
acudid con el Evangelio:
<cita_latin>De corde exeunt cogitationes malae</cita_latin>.
Si de la instabilidad de los amigos, ahí está Catón, que os dará su dístico:
<cita_latin>
Donec eris felix, multos numerabis amicos,
tempora si fuerint nubila, solus eris.
</cita_latin>
Y con estos latinicos y otros tales os tendrán siquiera por gramático, que
Y con esto, Dios te dé salud, y a mí no olvide. Vale.
</autor>
</bloque>
</texto_Quijote_I>
我試圖提取所有某些標籤之間的文本。因此,例如,獲得<autor>..</autor>
標籤之間的所有文字,我想這一點:
import xml.etree.ElementTree as ET
tree = ET.parse("file.xml")
root = tree.getroot()
text = ""
for n in root.findall(".//autor"):
text += n.text
但是,當我檢查字符串,我只得到:
"Desocupado lector: sin juramento me podrás creer que quisiera que este;
como será poner, tratando de libertad y cautiverio:"
這是它應該是如何工作的?我期待得到<autor>
和</autor>
之間的所有文本。
文檔說文本僅顯示標籤的文本內容。其他東西不是文本(集合和子集理論?)的一部分: Element.findall()僅查找帶有作爲當前元素的直接子元素的標記的元素。 Element.find()用特定的標籤找到第一個子元素,Element.text訪問元素的文本內容。 Element.get()訪問元素的屬性:' 此外,'xml.etree.ElementTree模塊對於惡意構造的數據不安全。如果您需要解析不可信或未經身份驗證的數據,請參閱XML漏洞。# –
Adib