2013-02-17 62 views
0

我迷路了我想從python的url xml文件中提取一個值,我看到了那裏有很多庫,但無法取得一些成功。另一個xml python提取

<?xml version="1.0"?> 
<root LoadTime="1360991134" DataVersion="991138826" UserData_DataVersion="991134040" 
TimeStamp="1361131034" ZWaveStatus="1" LocalTime="2013-02-17 14:57:14 D"> 
<Device_Num_82 status="-1"> 
<states> 
<state id="72" service="urn:upnp-org:serviceId:XBMCState1" variable="Port" value="80"> 
</state> 
<state id="73" service="urn:upnp-org:serviceId:XBMCState1" variable="PingInterval"  
value="180"></state> 
<state id="74" service="urn:upnp-org:serviceId:XBMCState1" variable="PingStatus" 
value="up"></state> 
<state id="75" service="urn:upnp-org:serviceId:XBMCState1" variable="IdleTime" 
value="program"></state> 
<state id="76" service="urn:upnp-org:serviceId:XBMCState1" variable="PlayerStatus" 
value="Video_end"></state> 
<state id="77" service="urn:micasaverde-com:serviceId:HaDevice1" variable="CommFailure" 
value="1"></state> 
<state id="78" service="urn:micasaverde-com:serviceId:HaDevice1" variable="LastUpdate" 
value="0"></state> 
<state id="79" service="urn:micasaverde-com:serviceId:HaDevice1" variable="Configured" 
value="0"></state> 
</states> 
<Jobs></Jobs> 
<tooltip display="0"></tooltip> 
</Device_Num_82> 
</root> 

我想ID = 75(節目)的

由於

在這裏,代碼

import xml.etree.ElementTree as ET 
import urllib.request 

VERA = 'http://192.168.2.19:3480/data_request?id=status&output_format=xml&DeviceNum=82' 

xml = urllib.request.urlopen(VERA).read() 
tree = ET.fromstring(xml) 
print (tree.find('.//state[@id="75"]').attrib['service']) 
# urn:upnp-org:serviceId:XBMCState1 

這裏錯誤

Traceback (most recent call last): 
File "/Users/Michael/Desktop/test.py", line 8, in <module> 
print (tree.find('.//state[@id="75"]').attrib['service']) 
AttributeError: 'NoneType' object has no attribute 'attrib' 
+0

那你試試這麼遠嗎? – oefe 2013-02-17 20:49:17

+0

然後,不存在ID爲「75」的「狀態」節點... – 2013-02-17 21:22:34

+0

我知道爲什麼現在,我使用瀏覽器進行檢查,並且每次我重新編寫id更改。有沒有一種方法來檢查變量IdleTime而不是 – user2052746 2013-02-17 21:40:31

回答

0

xml是值一條條您的數據,然後使用lxml的NG,你可以這樣做:

​​

或者,您可以執行以下操作使用內置xml庫:

import xml.etree.ElementTree as ET 

tree = ET.fromstring(xml) 
print tree.find('.//state[@id="75"]').attrib['service'] 
# urn:upnp-org:serviceId:XBMCState1 
+0

python是用於xbmc插件的有沒有一個標準的方法,沒有安裝其他庫或有沒有辦法將該庫與Python腳本? – user2052746 2013-02-17 21:02:35

+0

@ user2052746使用Python的內置'xml'庫進行編輯 – 2013-02-17 21:10:02

+0

這裏我的代碼:fefe – user2052746 2013-02-17 21:17:22