Python从XML文件读取数据
我使用minidom读取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
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操作。