minidom.parse reading short XML?



这里有2个类似的XML文件:

长XML

<mynode>
   <text>Blah</text>
   <position>322,13</position>
</mynode>

短XML

<mynode text="Blah" position="322,13" />

似乎Python的minidom.parse不喜欢短XML

这是 minidom(xml)可用的短XML样式

是否可以编写一个唯一的代码,该代码将读取短和长XML?

from xml.dom import minidom
def getChild(n,v):
    for child in n.childNodes:
        if child.localName==v:
            yield child
def getValue(n, val):
    res = None
    for n in mynode:
        rv = getChild(n,val)
        for v in rv:
            var = v.childNodes[0].nodeValue
            res = var
    if not res:
        for n in mynode:
            attr = n.getAttributeNode(val)
            if attr:
                res = attr.nodeValue.strip()
    return res

xmldoc = minidom.parse('file.xml')
mynode = xmldoc.getElementsByTagName('mynode')
print getValue(mynode,'text')
print getValue(mynode,'position')

输出:

Blah
322,13

您需要一个root节点

>>> from xml.dom.minidom import parseString
>>> doc = parseString('<root><mynode text="Blah" position="322,13" /></root>')
>>> print d.firstChild.firstChild.getAttribute('text')
Blah
>>> print d.firstChild.firstChild.getAttribute('position')
322,13

相关内容

  • 没有找到相关文章

最新更新