0

lxml を使用していくつかの xml ファイルを解析しています。私はそれらを作成しません。私はそれらを解析しているだけです。一部のファイルには、名前空間の無効な uri が含まれています。例えば:

'D:\Path\To\some\local\file.xsl'

処理しようとするとエラーが発生します。

lxml.etree.XMLSyntaxError: xmlns:xsi: 'D:\Path\To\some\local\file.xsl' is not a valid URI

無効な uri を何か (' http://www.googlefsdfsd.com/ ' など) に置き換える簡単な方法はありますか? 正規表現を書くことを考えましたが、もっと簡単な方法を望んでいました。

4

2 に答える 2

5

パーサーが気に入らないのは、名前空間 uri のバックスラッシュです。

URI が無効であっても xml を解析するには、引数を に設定してlxml.etree.XMLParserをインスタンス化し、それを使用してファイルを解析します。recoverTrue

from lxml import etree
recovering_parser = etree.XMLParser(recover=True)
xml = etree.parse("xmlfile.xml", parser=recovering_parser)
...
于 2013-09-09T09:32:22.367 に答える
0

これらの特定のエラーがユースケースにとって重要ではないことが確実な場合は、例外としてキャッチできます。

try:
   # process your tree here
   SomeFn()

except lxml.etree.XMLSyntaxError, e:
   print "Ignoring", e
   pass
于 2013-09-09T07:08:07.250 に答える