繁体   English   中英

使用Python minidom解析XML

[英]Parsing XML using Python minidom

 <PacketHeader>   
     <HeaderField>
        <name>number</name>
        <dataType>int</dataType>
     </HeaderField>
 </PacketHeader>

这是我的小XML文件,我想提取出名称标签内的文本。

这是我的代码片段: -

from xml.dom import minidom
from xml.dom.minidom import parse

xmldoc = minidom.parse('sample.xml')
packetHeader = xmldoc.getElementsByTagName("PacketHeader")
headerField = packetHeader.getElementsByTagName("HeaderField")
for field in headerField:
    getFieldName = field.getElementsByTagName("name")
    print getFieldName

但我得到的位置,但不是文本。

from xml.dom import minidom
from xml.dom.minidom import parse

xmldoc = minidom.parse('sample.xml')

# find the name element, if found return a list, get the first element
name_element = xmldoc.getElementsByTagName("name")[0]

# this will be a text node that contains the actual text
text_node = name_element.childNodes[0]

# get text
print text_node.data

请检查一下。

更新

顺便提一下 ,我建议你使用ElementTree ,下面是使用ElementTree的代码片段,它与上面的minidom代码做同样的事情

import elementtree.ElementTree as ET

tree = ET.parse("sample.xml")

# the tree root is the toplevel `PacketHeader` element
print tree.findtext("HeaderField/name")

上面接受的正确答案的一个小变体是:

from xml.dom import minidom


xmldoc = minidom.parse('fichier.xml')
name_element = xmldoc.getElementsByTagName('name')[0]
print name_element.childNodes[0].nodeValue

这只是使用nodeValue而不是其别名data

暂无
暂无

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

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