2012-01-23 12 views
1

は私のコードで奇妙なことです。私は何を得るlxmlの:間違った結果が、なぜここ

import lxml.html 
myxml=''' 
<cooperate> 
    <job DecreaseHour="1" table="tpa_radio_sum"> 
    </job> 

    <job DecreaseHour="2" table="tpa_radio_sum">         
    </job> 


    <job DecreaseHour="3" table="tpa_radio_sum"> 
    </job> 
</cooperate> 
''' 
root=lxml.html.fromstring(myxml) 
nodes1=root.xpath('//job[@DecreaseHour="1"]') 
nodes2=root.xpath('//job[@table="tpa_radio_sum"]')  
print "nodes1=",nodes1 
print "nodes2=",nodes2 

です:
nodes1=[]

nodes2=[ Element job at 0x1241240,  
Element job at 0x1362690,  
Element job at 0x13626c0] 

nodes1[]あるのはなぜ?それはとても奇妙なことです。どうして ?

答えて

5

あなたはすべての属性が小文字になっHTMLパーサを使用しているので:

>>> root.xpath("//job")[0].attrib 
{'table': 'tpa_radio_sum', 'decreasehour': '1'} 

あなたは本当のXMLパーサを使用することができます。

>>> import lxml.etree 
>>> root = lxml.etree.fromstring(myxml) 
>>> root.xpath('job[@DecreaseHour="1"]') 
[<Element job at 0x293daa8>]