这是一个我正在尝试的简单代码示例。
from lxml import etree
myXML = etree.XML('''\
<registers part="FXLS8471Q">
<register fxblock="Newfx">
<regname>STATUS_NEW</regname>
<regnamelong/>
<type>R</type>
<address>00</address>
<defaulthex>00</defaulthex>
<field>
<number>7</number>
<name>F_STATUS</name>
<width>8</width>
<reset>00000000</reset>
</field>
</register>
</registers>
''')
def hello(context, a):
return "Hello %s" % a
ns = etree.FunctionNamespace(None)
ns['hello'] = hello
print(myXML.xpath("hello('Dr. Falken')"))
print(myXML.xpath('hello(string(regname))'))
我很困惑为什么最后一句话没有打印出我期望的内容(STATUS_NEW)。如何判断我的Python 2.7和站点包是否存在不兼容问题?或者是否存在编码错误?
lxml是否支持所有XPath内置函数,如果没有,有人能指出我支持哪些子集?我正在使用lxml 3.2.1。
谢谢, 贾亚拉姆
答案 0 :(得分:1)
正确的XPath表达式为//regname
或/registers/register/regname
:
print(myXML.xpath('hello(string(//regname))'))