我試圖解析XML文檔以返回<input>
包含ref
屬性的節點。一個玩具示例可以工作,但文檔本身會返回一個空數組,當它顯示匹配時。使用lxml和elementtree解析XML
玩具例如
import elementtree.ElementTree
from lxml import etree
tree = etree.XML('<body><input ref="blabla"><label>Cats</label></input><input ref="blabla"><label>Dogs</label></input><input ref="blabla"><label>Birds</label></input></body>')
# I can return the relevant input nodes with:
print len(tree.findall(".//input[@ref]"))
2
但由於某種原因如下(減少)文件的工作失敗:
的example.xml
<?xml version="1.0"?>
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<h:head>
<h:title>A title</h:title>
</h:head>
<h:body>
<group ref="blabla">
<label>Group 1</label>
<input ref="blabla">
<label>Field 1</label>
</input>
</group>
</h:body>
</h:html>
腳本
import elementtree.ElementTree
from lxml import etree
with open ("example.xml", "r") as myfile:
xml = myfile.read()
tree = etree.XML(xml)
print len(tree.findall(".//input[@ref]"))
0
任何想法爲什麼這會失敗,以及如何解決?我認爲這可能與XML標題有關。非常感謝任何幫助。
有什麼錯誤訊息?究竟是什麼失敗? – refi64