Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python从XML文件读取数据_Python_Xml_Tags_Minidom - Fatal编程技术网

Python从XML文件读取数据

Python从XML文件读取数据,python,xml,tags,minidom,Python,Xml,Tags,Minidom,我使用minidom读取XML文件,但在下面的示例中,这不起作用。我收到一条错误消息: 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) Fi

我使用minidom读取XML文件,但在下面的示例中,这不起作用。我收到一条错误消息:

 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
我想检索
标记(
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>

101.86090
这是错误消息:

 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
文件“minidomrecup.py”,第5行,在
dom=parse('/root/Desktop/bot/tpage.xml')
文件“/usr/lib/python2.7/xml/dom/minidom.py”,第1920行,解析中
返回expatbuilder.parse(文件)
文件“/usr/lib/python2.7/xml/dom/expatbuilder.py”,第924行,解析中
结果=builder.parseFile(fp)
文件“/usr/lib/python2.7/xml/dom/expatbuilder.py”,第207行,在parseFile中
parser.Parse(缓冲区,0)
xml.parsers.expat.expat错误:未绑定前缀:第2行第0列

显示的XML无效,因为它使用了名称空间前缀(
sys
),但没有定义它,并且XML解析器(
XML.dom.expatbuilder
模块)对此阻塞。您必须直接转到
expatbuilder
,以便为其
parse()
函数提供忽略名称空间的参数。如果要提取第二个
中的文本节点,则索引将关闭1:

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()

minidom似乎不能接受嵌套的
span
。因为当我将第二个
span
标记更改为
p
标记时,minidom不会再抱怨了。为什么不使用
beautifulsoup
进行xml解析,它更方便。我使用
beautifulsoup
从网站上查找和检索标签,并在xlm文件中写入,我使用
minidom
span
中检索值,这是有效的。但是
span
sys:…
哪里,这是无效的。我认为这才是真正的问题。不是
minidom
神奇的关键字是
python xml冒号
。谷歌吧!您可以使用lxml进行xml操作。