python中是否有任何方法或任何框架可以从xml创建对象模型?

Poo*_*oya 6 python xml data-modeling objectify

例如我的xml文件包含:

<layout name="layout1">
    <grid>
        <row>
            <cell colSpan="1" name="cell1"/>
        </row>
        <row>
            <cell name="cell2" flow="horizontal"/>
        </row>
    </grid>
</layout>
Run Code Online (Sandbox Code Playgroud)

我想从xml中检索一个对象,例如返回的对象结构就像这样

class layout(object):
     def __init__(self):
         self.grid=None
class grid(object):
     def __init__(self):
         self.rows=[]
class row(object):
     def __init__(self):
         self.cels=[]
Run Code Online (Sandbox Code Playgroud)

Poo*_*oya 4

我找到了答案我在 lxml 包中使用了 objectify

这是示例代码:

from lxml import objectify

root = objectify.fromstring("""
 <root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <a attr1="foo" attr2="bar">1</a>
   <a>1.2</a>
   <b>1</b>
   <b>true</b>
   <c>what?</c>
   <d xsi:nil="true"/>
 </root>
""")

print objectify.dump(root)
Run Code Online (Sandbox Code Playgroud)

它打印:

root = None [ObjectifiedElement]
    a = 1 [IntElement]
      * attr1 = 'foo'
      * attr2 = 'bar'
    a = 1.2 [FloatElement]
    b = 1 [IntElement]
    b = True [BoolElement]
    c = 'what?' [StringElement]
    d = None [NoneElement]
      * xsi:nil = 'true'
Run Code Online (Sandbox Code Playgroud)