PyXB示例:生成Python代码并获取XML Element中的Attribute值

时间:2013-09-20 03:53:34

标签: python xml xsd pyxb

我很难开始使用PyXB。

让我们使用这个XML文件:

<?xml version="1.0"?>
<purchaseOrder orderDate="1999-10-20">
  <shipTo country="US">
    <name>Alice Smith</name>
    <street>123 Maple Street</street>
    <city>Anytown</city><state>AK</state><zip>12341</zip>
  </shipTo>
  <billTo country="US">
    <name>Robert Smith</name>
    <street>8 Oak Avenue</street>
    <city>Anytown</city><state>AK</state><zip>12341</zip>
  </billTo>
</purchaseOrder>

说我是否设法创建了Python库pol.py:

Python代码

import po1
xml = open('po1.xml').read()
order = po1.CreateFromDocument(xml)

我知道我可以在Element中获取内容(例如order.billTo.name = Robert Smith),但是如何从属性“country”(即“US”)获取值?

提前致谢!

参考: http://pyxb.sourceforge.net/userref_pyxbgen.html

1 个答案:

答案 0 :(得分:3)

PyXB将XML属性公开为Python属性,其方式与XML元素作为Python属性公开的方式完全相同。所以你只是这样做:

print(order.billTo.name)
print(order.billTo.country)

在XML中,属性和元素位于不同的名称空间中,而在Python中它们共享一个名称空间,因此如果属性和元素使用相同的名称,则属性将由PyXB重命名。在这种情况下生成绑定时会发出诊断信息。有关此流程的详细信息,请参阅Deconflicting Names