python minidom xml解析以获得第一个子节点的值
我正在使用python minidom解析xml,但无法使其在xml下工作。我要选择的第一个服务器代码,并要名标签的值,在这种情况下,“服务器1”python minidom xml解析以获得第一个子节点的值
<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>
你必须引用XML DOM documentation和咬紧牙关。
为了得到第<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)
它会随着每次刷新而提高:) – DevC 2013-03-28 11:15:13
@DevC:我倾向于避免minidom如果可能的话,我的DOM技能是生锈的,我不断回想一些技巧。由于我不得不认真处理这个标准,它[已经有一段时间了](http://lists.w3.org/Archives/Public/www-dom/2001JanMar/author.html#msg232)。 – 2013-03-28 11:16:37
接下来的一部分是错误的,或者是indentation或者其他东西.. gotcha接下来不在Python 2.4 – DevC 2013-03-28 11:19:00
您不使用[ElementTree的API(任何原因http://docs.python.org/2/library/xml.etree .elementtree.html)而不是? – 2013-03-28 10:48:37
我们的服务器运行在python 2.4上,我们想要的东西是内置于 – DevC 2013-03-28 10:51:02
这是一个有效的原因,但我会着眼于升级服务器尽快; 2.4比较古老。 – 2013-03-28 10:52:55