【问题标题】:lxml use namespace instead of ns0, ns1,lxml 使用命名空间而不是 ns0、ns1、
【发布时间】:2013-11-11 15:06:05
【问题描述】:

我刚开始学习 lxml 基础知识,但我被命名空间困住了:我需要生成这样的 xml:

<CityModel
xmlns:bldg="http://www.opengis.net/citygml/building/2.0"
    <cityObjectMember>
        <bldg:Building>
            <bldg:function>1000</bldg:function>
        </bldg:Building>
    </cityObjectMember>
</CityModel>

通过使用以下代码:

from lxml import etree

cityModel = etree.Element("cityModel")
cityObject = etree.SubElement(cityModel, "cityObjectMember")
bldg = etree.SubElement(cityObject, "{http://schemas.opengis.net/citygml/building/2.0/building.xsd}bldg")
function = etree.SubElement(bldg, "{bldg:}function")
function.text = "1000"

print etree.tostring(cityModel, pretty_print=True)

我明白了:

<cityModel>
    <cityObjectMember>
        <ns0:bldg xmlns:ns0="http://schemas.opengis.net/citygml/building/2.0/building.xsd">
            <ns1:function xmlns:ns1="bldg:">1000</ns1:function>
        </ns0:bldg>
        </cityObjectMember>
</cityModel>

这与我想要的完全不同,我的软件不解析它。 如何获取正确的xml?

【问题讨论】:

    标签: python xml lxml


    【解决方案1】:
    from lxml import etree
    
    ns_bldg = "http://www.opengis.net/citygml/building/2.0"
    nsmap = {
        'bldg': ns_bldg,
    }
    
    cityModel = etree.Element("cityModel", nsmap=nsmap)
    cityObject = etree.SubElement(cityModel, "cityObjectMember")
    bldg = etree.SubElement(cityObject, "{%s}Building" % ns_bldg)
    function = etree.SubElement(bldg, "{%s}function" % ns_bldg)
    function.text = "1000"
    print etree.tostring(cityModel, pretty_print=True)
    

    打印

    <cityModel xmlns:bldg="http://www.opengis.net/citygml/building/2.0">
      <cityObjectMember>
        <bldg:Building>
          <bldg:function>1000</bldg:function>
        </bldg:Building>
      </cityObjectMember>
    </cityModel>
    

    lxml.etree Tutorial - Namespaces

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 2011-05-24
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多