要素タグにxml.etree.ElementTree.xml()がWebサイト名を含めるのを防止する

私はPythonを使用して、いくつかのXMLを取ってdictに変換しようとしています。コードは、奇妙なテキストがdictプロパティ名に追加される要素タグに追加されていることを除いて、正常に動作します。このテキストは、 "WebServiceGeocodeQueryResult"属性の値であると思われます。 "xmlns"。

私のコードは次のようになります:

import xml.etree.ElementTree as ET
import xml_to_dictionary # This is some code I found, it seems to work fine:
                         # http://code.activestate.com/recipes/410469-xml-as-dictionary/

def doSomeStuff()
    theXML = """
<?xml version="1.0" encoding="utf-8"?>
    

        <transactionId>7307e84c-d0c8-4aa8-9b83-8ab4515db9cb
        38.8092475915888
        -77.2378689948621
        ...
"""

    tree = ET.XML(result.content)   # this is where the element names get the added '{https://webgis.usc.edu/}'
    xmldict = xml_to_dictionary.XmlDictConfig(tree)

As you can see in the debugger, the element names in the object "tree" have the annoying prefix: "{https://webgis.usc.edu/}": enter image description here

And this prefix is translated to the dict property names: enter image description here

3

1 答え

その "奇妙なテキスト"は要素の名前空間です。 ElementTree 要素名を汎用名

次のように要素名を前処理することができます:

tree = ET.XML(thexml)
et = ET.ElementTree(tree) # this is to include root node
for elem in et.getiterator(): #in python 2.7 or greater, getiterator() is unnecessary
    elem.tag = elem.tag.split('}', 1)[-1]

さて、 cElementTree が利用可能であれば、それをより速く使用するべきです。 ( import xml.etree.cElementTreeはET として)

5
追加された