use*_*601 1 python xml parsing xml-parsing
希望这是经验丰富的人的快速答案.我有一个包含URL的XML文件,我想从XML中获取URL,然后将其输入到我编写的下载脚本中.我唯一的问题是我似乎无法正确解析XML中的url.这就是它的样子:
<program new-version="1.1.1.1" name="ProgramName">
<download-url value="http://website.com/file.exe"/>
</program>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
>>> code = '''<program new-version="1.1.1.1" name="ProgramName">
... <download-url value="http://website.com/file.exe"/>
... </program>'''
Run Code Online (Sandbox Code Playgroud)
使用lxml:
>>> import lxml.etree
>>> lxml.etree.fromstring(code).xpath('//download-url/@value')[0]
'http://website.com/file.exe'
Run Code Online (Sandbox Code Playgroud)
使用内置的xml.etree.ElementTree:
>>> import xml.etree.ElementTree
>>> doc = xml.etree.ElementTree.fromstring(code)
>>> doc.find('.//download-url').attrib['value']
'http://website.com/file.exe'
Run Code Online (Sandbox Code Playgroud)
使用内置的xml.dom.minidom:
>>> import xml.dom.minidom
>>> doc = xml.dom.minidom.parseString(code)
>>> doc.getElementsByTagName('download-url')[0].getAttribute('value')
u'http://website.com/file.exe'
Run Code Online (Sandbox Code Playgroud)
你选择哪一件完全取决于你.需要安装lxml,但它是速度最快,功能最丰富的库.xml.etree.ElementTree有一个时髦的界面,它的XPath支持是有限的(取决于python标准库的版本).xml.dom.minidom不支持xpath并且往往更慢,但实现了跨平台DOM.