Dear lxml people!

You may have noticed that I am working on a better lxml.objectify. I have not decided yet on a final name for this so lets name it "prefix_objectify" in the meanwhile.

This name reflects on its aim - to include the ns-prefix information into the Python property name.

Motivation:

If I have a ISO19139 snipplet

|<gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd"; xmlns:gco="http://www.isotc211.org/2005/gco"; > <gmd:fileIdentifier> <gco:CharacterString>2ce585df-df23-45f6-b8e1-184e64e7e3b5</gco:CharacterString> </gmd:fileIdentifier> <gmd:language> <gmd:LanguageCode codeList="https://www.loc.gov/standards/iso639-2/"; codeListValue="ger">ger</gmd:LanguageCode> </gmd:language> </gmd:MD_Metadata> |

lxml is not capable to expose the |gco:CharacterString as a Python property.|

|https://stackoverflow.com/questions/71212909/python-lxml-objectify-gives-no-attribute-access-to-gcocharacterstring-node
|

So I decided to come up with a better solution including the namespace-prefix into the Python property name (as all other frameworks dealing with qualified names are doing).

So |gco:CharacterString will be exposed as a Python property '|||gco_CharacterString'.||


Even the recent discussion on the flaws of lxml.objectify is rather controversical. So I decided to contribute "prefix_objectify" as different python package/project and not as a fork of LXML to avoid a clash.

The usage of "prefix_objectify" should be as easy as :

from lxml.objectify import ObjectifyElementClassLookup

from lxml import etree
from prefix_objectify import PrefixObjectifiedElement

obj2_lookup = ObjectifyElementClassLookup(tree_class=PrefixObjectifiedElement)

parser = etree.XMLParser()
parser.set_element_class_lookup(obj2_lookup)

node = etree.parse('4157d397-e2c3-4e6e-8a84-0712aa9c1162.xml', parser=parser).getroot()


ATM while I do reverse engineering of the lxml.objectify code it is more convenient to make a fork first. This is e.g. due to the lack of pxd-file describing lxml.objectify.

My fork of lxml lives here

https://github.com/Inqbus/lxml/tree/objectify_prefix

in the branch 'objectify_prefix'.

Around half of the tests are running good.


This is after hour work in progress and I welcome any feedback or contribution.


Cheers,

Volker


--
=========================================================
   inqbus Scientific Computing    Dr.  Volker Jaenisch
   Hungerbichlweg 3               +49 (8860) 9222 7 92
   86977 Burggenhttps://inqbus.de
=========================================================
_______________________________________________
lxml - The Python XML Toolkit mailing list -- lxml@python.org
To unsubscribe send an email to lxml-le...@python.org
https://mail.python.org/mailman3/lists/lxml.python.org/
Member address: arch...@mail-archive.com

Reply via email to