0

私はxmlを解析するためにpython minidomを使用していますが、xmlの下で動作させることができません。最初のサーバー タグを選択し、name タグの値が必要です。この場合は「Server1」です。

<class>
<name>MyClass</name>
<security>
<name>MyClass</name>
</security>
<server>
<name>Server1</name>
<ssl>
 <name>Server1</name>
</ssl>
<server-info>
 <name>Server1</name>
</server-info>
</server>
<server>
<name>Server2</name>
<ssl>
 <name>Server2</name>
</ssl>
<server-info>
 <name>Server2</name>
</server-info>
</server>
<server>
<name>Server3</name>
<ssl>
 <name>Server3</name>
</ssl>
<server-info>
 <name>Server3</name>
</server-info>
</server>
</class>
4

1 に答える 1

2

XML DOM ドキュメントを参照して、歯を食いしばる必要があります。

最初の<server>要素を取得するには、次のようにします<name>

from xml.dom import minidom

document = minidom.parse(inputfilename)

def findChildNodeByName(parent, name):
    for node in parent.childNodes:
        if node.nodeType == node.ELEMENT_NODE and node.localName == name:
            return node
    return None

def getText(nodelist):
    rc = []
    for node in nodelist:
        if node.nodeType == node.TEXT_NODE:
            rc.append(node.data)
    return ''.join(rc)

# Get the first of all `<server>` nodes
server = document.getElementsByTagName('server')[0]

# Get the first child node that is a `<name>` element
name = findChildNodeByName(server, 'name')
if name is not None:
    print getText(name.childNodes)
于 2013-03-28T11:07:25.777 に答える