-1

ファイルには次の行が含まれています。

<?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 は空のリストです)

4

3 に答える 3

1

@falsetruの回答の代替

「バージョンタグを読み取ろうとする」ことで、「バージョン属性」を理解します(これはあなたが望むものではないかもしれません))

「fvdl」プレフィックスの下に、明示的に fvdl 名前空間を登録します。

ver = context.xpath('//fvdl:FVDL/@version',
          namespaces={"fvdl": "xmlns://www.fortifysoftware.com/schema/fvdl"})

versionまたは、ルートノードから属性が必要であることがどういうわけかわかっている場合は、リスクが高くなります

ver = context.xpath('/*/@version')

どちらも与える['1.9']

于 2013-08-06T16:20:19.587 に答える
1
context = etree.parse(file_handle)
ver = context.getroot()
print ver.attrib['version']

output:'1.9'
于 2013-08-06T16:20:56.913 に答える