【问题标题】:Python - Parse Single Line from XMLPython - 从 XML 解析单行
【发布时间】:2012-01-18 01:20:22
【问题描述】:

希望这对有经验的人来说是一个快速的答案。我有一个包含 URL 的 XML 文件,我想从 XML 中获取 URL,然后将其输入到我编写的下载器脚本中。我唯一的问题是我似乎无法正确解析 XML 中的 url。这是它的样子:

<program new-version="1.1.1.1" name="ProgramName">
<download-url value="http://website.com/file.exe"/>
</program>

提前致谢!

【问题讨论】:

    标签: python xml parsing xml-parsing


    【解决方案1】:
    >>> code = '''<program new-version="1.1.1.1" name="ProgramName">
    ... <download-url value="http://website.com/file.exe"/>
    ... </program>'''
    

    lxml:

    >>> import lxml.etree
    >>> lxml.etree.fromstring(code).xpath('//download-url/@value')[0]
    'http://website.com/file.exe'
    

    使用内置xml.etree.ElementTree

    >>> import xml.etree.ElementTree
    >>> doc = xml.etree.ElementTree.fromstring(code)
    >>> doc.find('.//download-url').attrib['value']
    'http://website.com/file.exe'
    

    使用内置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'
    

    你选择哪一个完全取决于你。 lxml 需要安装,但它是最快且功能最丰富的库。 xml.etree.ElementTree 有一个时髦的接口,它的 XPath 支持是有限的(取决于 python 标准库的版本)。 xml.dom.minidom 不支持xpath,往往比较慢,但是实现了跨平台DOM

    【讨论】:

      【解决方案2】:
       import lxml
       from lxml import etree
       et = etree.parse("your xml file or url")
       value = et.xpath('//download-url/@value')
       print "".join(value)
      

      输出 = 'http://website.com/file.exe'

      你也可以使用cssselect

       f = open("your xml file",'r')
       values = f.readlines()
       values = "".join(values)
       import lxml.html
       doc = lxml.html.fromstring(values)
       elements = doc.cssselect('document program download-url') //csspath using firebug
       elements[0].get('value')
      

      输出 = 'http://website.com/file.exe'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多