2013-02-17 4 views
0

내가 잃어 버렸어. 나는 파이썬에서 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> 

i는 식 (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 

xml가 에러

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

+0

id가 "75"인'state' 노드가 존재하지 않습니다 ... –

+0

나는 왜 지금은 브라우저로 확인하고 매번 ID 변경을 반영합니다. 변수 IdleTime 대신에 – user2052746

답변

0

원하는 스트라이프 다음 lxml를 사용하여 데이터의 NG, 당신은 할 수 있습니다 :

import lxml.etree as ET 

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

또는 당신이 할 수있는 사용하여 다음과 같은 내장 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 addon을위한 것입니다. 다른 라이브러리를 설치하지 않고 표준 방법이 있습니까? 아니면 Python 스크립트에 라이브러리를 포함 할 수있는 방법이 있습니까? – user2052746

+0

@ user2052746은 파이썬에서 내장 'xml' 라이브러리를 사용하여 편집했습니다 –

+0

내 코드 : fefe – user2052746