1
lxml.objectify
の使用方法に関するヒントは誰でもrecover=True
にありますか?lxml.objectifyは引用符なしでattribを解析できません - 回復は必要ですか?
属性が引用されないxmlがあります。名前= '値'ではなく名前=値です。
以下はいくつかのサンプルコードです...私は元に戻って変更することはできませんので、私はXMLの書式を制御できません。 etree
構文解析エラーが
File "<string>", line unknown
XMLSyntaxError: AttValue: " or ' expected, line 4, column 21
lxml.objectify
CODEある
に動作します -
xmlSample="""<dict>
<maptable>
<hdterm displevel=1 autlookup entrytype=1>Source term</hdterm>
</maptable>
</dict>"""
に失敗した私は答えを取得しない場合、私は
import io
#p = objectify.XMLParser(recover=True)
root = objectify.fromstring(xmlSample)
# returns attributes in element node as dict
attrib = root.getattrib()
# how to extract element data
tbl = root.mytable
print("root.mytable type=%s" % type(tbl))
を再しなければなりませんの
lxml.etree
- WORKS!
from lxml import etree, objectify
import io
xmlIO = io.StringIO(xmlSample)
p = etree.XMLParser(recover=True)
tree = etree.parse(xmlIO, parser=p)
root = tree.getroot()
print(root.tag)
OUTPUT:
myxml
ありがとう:よく形成された中間XMLを解析するために壊れたXML入力を修正して、
objectify
するrecover=True
とetree
!これについて考える。実際のXMLは非常に大きなファイルです。このアプローチでは、xml-> etree、etree-> good_xml、good_xml-> objectsの3回の解析が必要になります。元のXMLに戻ってデータをトレースすると、問題が発生する可能性があります。 – frankr6591objectify.XMLParser(recover = True)はありませんか?またはオブジェクト化パーサーを置き換える方法? – frankr6591
@ frankr6591私は、 'recover = True'オプションを' objecdtify'に渡す方法を見つけたと思います!上記の** UPDATE **セクションを参照してください。 – har07