[英]python xml.etree.ElementTree get everything inside element whether its text or children
我正在使用xml.etree.ElementTree
,並且如果可能的話不希望更改XML解析庫。
我可以解析XML文件,沒有任何問題。 我有一個特殊的<description>
標記,其中包含文本,並且想要檢索此文本。 這是我用於此目的的代碼:
import xml.etree.ElementTree as ET
rss = ET.fromstring(rss_content)
for node in rss[0].getchildren():
if node.tag == 'description':
print node.text
到現在為止還挺好。 但是我有時會有另一個xml內容作為文本,因此無法將其作為文本檢索。 我可以使用getchildren
方法來檢索它,並進行切換以區分為文本還是XML。 但是我想知道是否可以以一種更簡單的方式直接檢索全部內容(是否為XML)作為文本?
ElementTree元素上有itertext()
方法-它返回所有嵌套的文本,例如:
xmltxt='''<?xml version="1.0"?>
<TEXT>
<Description>
<V>played</V>
<N>John</N>
<PREP>with</PREP>
<en x='PERS'>Adam</en>
<PREP>in</PREP>
<en x='LOC'> ASL school</en>
</Description>
<Description>
<V y='0'>went</V>
<en x='PERS'>Mark</en>
<PREP>to</PREP>
<en x='ORG'>United Nations</en>
<PREP>for</PREP>
<PREP>a</PREP>
<N>visit</N>
</Description>
</TEXT>
'''
root = ET.fromstring(xmltxt)
for ch in root:
print ch
print "".join(ch.itertext())
print ET.tostring(ch)
輸出為:
played
John
with
Adam
in
ASL school
<Description>
<V>played</V>
<N>John</N>
<PREP>with</PREP>
<en x="PERS">Adam</en>
<PREP>in</PREP>
<en x="LOC"> ASL school</en>
</Description>
went
Mark
to
United Nations
for
a
visit
<Description>
<V y="0">went</V>
<en x="PERS">Mark</en>
<PREP>to</PREP>
<en x="ORG">United Nations</en>
<PREP>for</PREP>
<PREP>a</PREP>
<N>visit</N>
</Description>
或者要遍歷嵌套元素,請使用iter()
方法,為標記內的文本收集.text,為標記后的文本收集.tail。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.