lxml.objectify
recover=True
ile ilgili herhangi bir ipucu var mı?lxml.objectify öznitelikleri olmadan özniteliği ayrıştıramaz - kurtarma gerekir = Ttrue
Öznitelikleri alıntılanmadığı yerde xml var -> name = value yerine name = 'value'.
Aşağıda bazı örnek kodlar ... XML biçimlendirmesi üzerinde denetimim yok, böylece geri dönüp değiştiremiyorum. etree
ayrıştırma hatası
File "<string>", line unknown
XMLSyntaxError: AttValue: " or ' expected, line 4, column 21
lxml.objectify
CODE
işliyor -
xmlSample="""<dict>
<maptable>
<hdterm displevel=1 autlookup entrytype=1>Source term</hdterm>
</maptable>
</dict>"""
GETİRMEDİĞİ bir cevap almazsam ben
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))
yeniden var
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)
ÇIKIŞ:
myxml
Teşekkür! Bunu düşündüm. Gerçek XML çok büyük dosyalardır ve bu yaklaşım 3 kez ayrıştırmayı gerektirecektir: xml-> etree, etree-> good_xml, good_xml-> nesneleri. Artı verileri orijinal XML'ye geri izlemek sorunlu olabilir. – frankr6591
Sanırım hiçbir objectify.XMLParser (kurtarma = True) var mı? Veya nesnel ayrıştırıcı yerine geçmek için? – frankr6591
@ frankr6591 Sanırım 'recover = True' seçeneğini' objecdtify''a iletmenin yolunu buldum! – har07