该文件包含以下行。
<?xml version="1.0" encoding="UTF-8"?>
<FVDL xmlns="xmlns://www.fortifysoftware.com/schema/fvdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.9" xsi:type="FVDL">`
<CreatedTS date="2013-08-06" time="11:8:48" />`
我正在尝试读取FVDL中的版本标记。我正在使用lxml etree,我的代码片段是
from lxml import etree
with open(os.path.join(analysis,"merged-results.fvdl") ,"r") as file_handle:
context = etree.parse(file_handle)
ver = context.xpath('//FVDL')
print ver
这在解析标准xml文件之前一直有用。但是上面提到的文件是失败的。(ver是执行结束时的空列表)
答案 0 :(得分:1)
替代@fattru的答案
(通过“尝试阅读版本标签”,我理解“版本属性”(可能不是您想要的))
在“fvdl”前缀下显式注册fvdl名称空间:
ver = context.xpath('//fvdl:FVDL/@version',
namespaces={"fvdl": "xmlns://www.fortifysoftware.com/schema/fvdl"})
或者风险更高,如果你知道你想知道根节点的version
属性
ver = context.xpath('/*/@version')
两者都给['1.9']
答案 1 :(得分:1)
context = etree.parse(file_handle)
ver = context.getroot()
print ver.attrib['version']
output:'1.9'
答案 2 :(得分:0)
使用[local-name()=...]
:
ver = context.xpath('//*[local-name()="FVDL"]')