python – 如何将XML转换为对象?

我需要加载一个XML文件并将内容放入面向对象的结构中。我想这样做:

<main>
    <object1 attr="name">content</object>
</main>

并把它变成这样的东西:

main
main.object1 = "content"
main.object1.attr = "name"

它会有一个比这更复杂的结构,我不能硬编码元素名称。在解析并将其用作对象属性时,需要收集这些名称。

关于什么是最好的方法的任何想法?

最佳答案
值得一看http://lxml.de/objectify.html

>>> xml = """<main>
... <object1 attr="name">content</object1>
... <object1 attr="foo">contenbar</object1>
... <test>me</test>
... </main>"""

>>> from lxml import objectify

>>> main = objectify.fromstring(xml)

>>> main.object1[0]
'content'

>>> main.object1[1]
'contenbar'

>>> main.object1[0].get("attr")
'name'

>>> main.test
'me'

或者另一种方式来构建xml结构:

>>> item = objectify.Element("item")

>>> item.title = "Best of python"

>>> item.price = 17.98

>>> item.price.set("currency", "EUR")

>>> order = objectify.Element("order")

>>> order.append(item)

>>> order.item.quantity = 3

>>> order.price = sum(item.price * item.quantity
... for item in order.item)

>>> import lxml.etree

>>> print lxml.etree.tostring(order, pretty_print=True)
<order>
  <item>
    <title>Best of python</title>
    <price currency="EUR">17.98</price>
    <quantity>3</quantity>
  </item>
  <price>53.94</price>
</order>

转载注明原文:python – 如何将XML转换为对象? - 代码日志