2016-10-10 64 views
1

我们,我有一个xml结构,看起来有点像这样。python XML获取文本里面<p>...</p>标签

<abstract> 
    <p id = "p-0001" num = "0000"> 
    blah blah blah 
    </p> 
</abstract> 

我想只提取<abstract>标签内的<p>标签。

我想:

import xml.etree.ElementTree as ET 

xroot = ET.parse('100/A/US07640598-20100105.XML').getroot() 

for row in xroot.iter('p'): 
    print row.text 

这让所有在我的XML的<p>标签,它是不是一个好主意。

反正我有可以提取里面

我的愿望输出的文本将被提取“等等等等等等”

+0

你是怎么定义'xroot'的? –

+0

我编辑我的问题,我如何定义xroot。 –

+0

请确保您的问题包括XML内容中提供引用部分的位置上方的所有'xmlns ='声明。如果存在这样的声明,则仅在默认名称空间中搜索的查询将无法匹配。 –

回答

2

您可以使用XPath表达式搜索具体的abstractp元素:

for p in xroot.xpath(".//abstract//p"): 
    print(p.text.strip()) 

或者,如果使用iter()你可能有一个嵌套的循环:

for abstract in xroot.iter('abstract'): 
    for p in abstract.iter('p'): 
     print(p.text.strip()) 
+0

谢谢,这个工作正常。 –