简体   繁体   English

Python minidom xml解析以获取第一个子节点的值

[英]Python minidom xml parsing to get the value of first child node

I am using python minidom to parse a xml, but not able to get it working for below xml. 我正在使用python minidom来解析xml,但是无法让它在xml以下工作。 I want to select the first server tag and want the value of name tag , in this case "Server1" 我想选择第一个服务器标签并想要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>

You'll have to reference the XML DOM documentation and grit your teeth. 您将不得不参考XML DOM文档并咬紧牙关。

To get the first <server> element, then its <name> : 要获取第一个<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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM