我必须从XML文档中提取`friendlyName`。
这是我目前的解决方案:
root = ElementTree.fromstring(urllib2.urlopen(XMLLocation).read())
for root.iter(''{urn:schemas-upnp-org:device- 1-0} friendlyName''):
返回child.text
我有更好的方法这样做(可能是任何其他不涉及迭代的方式)?我可以使用XPath吗?
XML内容:
< root xmlns ="urn:schemas-upnp-org:device-1-0">
< specversion>
< major> 1
< minor> 0
< device>
< dlna:x_dlnadoc xmlns:dlna ="urn:schemas-dlna-org:device-1-0"> DMR-1.50
< devicetype> urn:schemas-upnp-org:device:MediaRenderer:1
< friendlyname>我的产品912496
< manufacturer> embedded
< manufacturerurl> http://www.embedded.com
< modeldescription>产品
< modelname>产品
< modelnumber>
< modelurl> http://www.embedded.com
< udn> uuid:93b2abac-cb6a-4857-b891- 002261912496
< servicelist>
< service>
&l t; servicetype> urn:schemas-upnp-org:service:ConnectionManager:1
< serviceid> urn:upnp-org:serviceId:ConnectionManager
< scpdurl> /xml/ConnectionManager.xml
< eventsuburl> /Event/org.mpris.MediaPlayer2.mansion/RygelSinkConnectionManager
< controlurl> /Control/org.mpris.MediaPlayer2 .mansion / RygelSinkConnectionManager
< service>
< servicetype> urn:schemas-upnp-org:service:AVTransport:1 < br />
< serviceid> urn:upnp-org:serviceId:AVTransport
< scpdurl> /xml/AVTransport2.xml
< eventsuburl> /Event/org.mpris.MediaPlayer2.mansion/RygelAVTransport
< controlurl> /Control/org.mpris.MediaPlayer2.mansion/RygelAVTransport
< service>
< servicetype> urn:schemas-upnp-org:service:RenderingControl:3
< serviceid> urn:upnp-org:serviceId :RenderingControl
< scpdurl> /xml/RenderingControl2.xml
< eventsuburl> /Event/org.mpris.MediaPlayer2.mansion/RygelRenderingControl
< controlurl> /Control/org.mpris.MediaPlayer2.mansion/RygelRenderingControl
< service>
< servicetype> urn:schemas-embedded-com:service:RTSPGateway:1
< serviceid> urn:embedded-com:serviceId:RTSPGateway
< scpdurl> / xml / RTSPGateway .xml
< eventsuburl> /Event/org.mpris.MediaPlayer2.mansion/RygelRTSPGateway
< controlurl> /Control/org.mpris.MediaPlayer2.mansion/RygelRTSPGateway
< service>
< servicetype> urn:schemas-embedded-com:service:SpeakerManagement:1
< serviceid> urn:embedded-com:serviceId:SpeakerManagement
< scpdurl> /xml/SpeakerManagement.xml
< eventsuburl> / Even t / org.mpris.MediaPlayer2.mansion / RygelSpeakerManagement
< controlurl> /Control/org.mpris.MediaPlayer2.mansion/RygelSpeakerManagement
< service>
< servicetype> urn:schemas-embedded-com:service:NetworkManagement:1
< serviceid> urn:embedded-com:serviceId:网络管理
< scpdurl> /xml/NetworkManagement.xml
< eventsuburl> /Event/org.mpris.MediaPlayer2.mansion/RygelNetworkManagement
< controlurl> /Control/org.mpris.MediaPlayer2.mansion/RygelNetworkManagement
< iconlist>
< icon>
< mimetype> image / png
< width> 120
< height> 120
< depth> 32
< url> /org.mpris.MediaPlayer2.mansion-120x120x32.png
< icon>
< mimetype> image / png
< width> 48
< height> 48
< depth> 32
< url> / org.mpris.MediaPlayer2.mansion-48x48x32.png
< icon>
< mimetype> image / jpeg
< width> 120
< height> 120
< depth> 24
< url> / org。 mpris.MediaPlayer2.mansion-120x120x24.jpg
< icon>
< mimetype> image / jpeg
< width> 48
< height> 48
< depth> 24
< url> /org.mpris。 MediaPlayer2.mansion-48x48x24.jpg
< x_embeddeddevice xmlns:edd ="schemas-embedded-com:extended-device-description ">
< firmwareversion> v1.0(4.155.1.15.002)
< features>
< feature> < br />
< name> com.sony.Product
< versio n> 1.0.0
< feature>
< name> com.sony.Product.btmrc
< version> 1.0.0
< feature>
< name> com.sony.Product.btmrs
< version> 1.0.0
< div class ="h2_lin">解决方案