Python从XML文件中读取数据

时间:2014-07-13 08:00:50

标签: python xml tags minidom

我使用minidom来读取我的XML文件但是使用以下示例这不起作用。我有一条错误消息:

我想检索<span>代码(101.86090)中的值,但我有错误。

这是代码:

 from xml.dom import minidom

 docXML = minidom.parse('/root/Desktop/tpage.xml')
 node = docXML.getElementsByTagName('span')[0]
 t= node.firstChild.data

这是tpage.xml

的内容
<span class="lp">

<span sys:innerhtml="{binding Last}"

sys:codeafter="$.quotebroker.setTitleProperties($dataItem, 'Last')">


  101.86090

</span>

</span>

这是错误消息:

 File "minidomrecup.py", line 5, in <module>
    dom = parse('/root/Desktop/bot/tpage.xml')
  File "/usr/lib/python2.7/xml/dom/minidom.py", line 1920, in parse
    return expatbuilder.parse(file)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 924, in parse
    result = builder.parseFile(fp)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 207, in parseFile
    parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: unbound prefix: line 2, column 0

1 个答案:

答案 0 :(得分:1)

显示的XML无效,因为它使用名称空间前缀(sys),但没有定义它,并且XML解析器(xml.dom.expatbuilder模块)对此进行了扼流。您必须直接转到expatbuilder才能为其parse()函数提供忽略名称空间的参数。如果您想在 second <span>中提取文本节点,那么您的索引会被一个关闭:

from xml.dom import expatbuilder


def main():
    document = expatbuilder.parse('test.xml', False)
    node = document.getElementsByTagName('span')[1]
    print float(node.firstChild.data)


if __name__ == '__main__':
    main()