Komoly munka XML Python használat lxml
Python jön ElementTree beépített könyvtárral, de lxml kiterjeszti a sebesség tekintetében, és alkalmassága (séma érvényesítését, szaxofon elemzés, XPath, különböző típusú iterátorokat és még sok egyéb).
Meg kell telepíteni, de sok helyen ez már feltételezzük, hogy része a szokásos berendezések (pl Google AppEngine nem engedélyezi a C alapú Python csomagok, de nem tesz kivételt lxml, pyyaml és néhány más).
Épület XML dokumentumok E-gyár (az lxml)
A kérdés az, épület XML dokumentum.
A lxml számos módszer létezik, és elvitt egy darabig, hogy megtalálja az egyetlen, amely úgy tűnik, hogy könnyen kezelhető és könnyen olvasható.
Minta kódot lxml doc használatával E-gyár (kissé egyszerűsített):
Az E-gyár, egyszerű és kompakt szintaxis generáló XML és HTML:
>>> from lxml.builder import E
>>> html = page = (
... E.html( # create an Element called "html"
... E.head(
... E.title("This is a sample document")
... ),
... E.body(
... E.h1("Hello!"),
... E.p("This is a paragraph with ", E.b("bold"), " text in it!"),
... E.p("This is another paragraph, with a", "\n ",
... E.a("link", href="http://www.python.org"), "."),
... E.p("Here are some reserved characters: <spam&egg>."),
... )
... )
... )
>>> print(etree.tostring(page, pretty_print=True))
<html>
<head>
<title>This is a sample document</title>
</head>
<body>
<h1>Hello!</h1>
<p>This is a paragraph with <b>bold</b> text in it!</p>
<p>This is another paragraph, with a
<a href="http://www.python.org">link</a>.</p>
<p>Here are some reserved characters: <spam&egg>.</p>
</body>
</html>
Értékelem az E-gyár azt követő dolgok
Kód szól szinte az XML dokumentum
Olvashatóságot számít.
Létrehozását is lehetővé teszi az XML tartalom
Támogatja ilyesmi:
- használata névterek
- kezdő és befejező szöveg csomópontokkal egyik eleme
- funkciók formázási attribútum tartalmát (lásd a funk CLASS teljes lxml minta )
Lehetővé teszi, hogy nagyon olvasható konstrukciók listákkal
például:
from lxml import etree
from lxml.builder import E
lst = ["alfa", "beta", "gama"]
xml = E.root(*[E.record(itm) for itm in lst])
etree.tostring(xml, pretty_print=True)
így:
<root>
<record>alfa</record>
<record>beta</record>
<record>gama</record>
</root>
Következtetések
Én nagyon ajánlom lxml konzultáció - ez nagyon jól megírt, és kapsz több ok, hogy használni ezt a hatalmas könyvtár.
Az egyetlen hátránya a lxml van, hogy össze kell állítani. Lásd SO válaszoljon a további tippeket , hogyan kell telepíteni lxml a kerék méret csomag keretében a másodperc töredéke alatt.