2016-08-24 76 views
1

我有一个看起来像this的XML文件。相关位是这样的:pyquery(lxml)没有在结构良好的XML文档中找到标签?

<reference> 
    <citation>Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for treatment of night eating syndrome: a 12-week, randomized, placebo-controlled trial. J Clin Psychopharmacol. 2012 Jun;32(3):341-5. doi: 10.1097/JCP.0b013e318254239b.</citation> 
    <PMID>22544016</PMID> 
</reference> 

我试图找到PMID字段的值,用PyQuery解析XML:

from pyquery import PyQuery as pq 

    text = open(f, 'r').read() 
    d = pq(text) 
    data = {}  
    data['nct_id'] = d('nct_id').text() 

    print d('reference') 
    reference = d('reference') 
    print reference('PMID') 
    data['pmid'] = reference('PMID').text() 

    print data['PMID'] 

为什么不是这方面的工作?在控制台中我看到的reference从第一个print语句的全部内容,后面两个空值:

<reference> 
    <citation>Vander Wal JS, Gang CH, Griffing GT, Gadde KM. Escitalopram for treatment of night eating syndrome: a 12-week, randomized, placebo-controlled trial. J Clin Psychopharmacol. 2012 Jun;32(3):341-5. doi: 10.1097/JCP.0b013e318254239b.</citation> 
    <PMID>22544016</PMID> 
    </reference> 

我可以在文档中找到其他的叶节点(如nct_id)就好使用.find(),作为例子代码显示。

PyQuery不喜欢大写标签吗?

回答

0

您可以指定地址解析器使用,它会工作:

d = pq(text, parser='xml') 
+0

这做到了!谢谢! – Richard