<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的代码段,该代码段与上述最小代码相同

import elementtree.ElementTree as ET

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

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

08-26 08:03