minidom中pythonxml的处理

2024-10-06 12:41:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下非常简单的XML文件,我想使用minidom快速解析每个设备的imsi元素。在

    <device>
      <imsi>01010101</imsi>  
    </device>
    <device>
      <imsi>123456</imsi>
    </device>
    <device>
      <imsi>9876543</imsi>
    </device>

    --------------------------
    CODE SNIPPET FOR PARSING
    --------------------------

    doc = xml.dom.minidom.parse("./input.xml")

    for node in doc.getElementsByTagName("device"):
          imsi = node.getElementsByTagName("imsi")
          print str(imsi)

当我执行上面的代码片段时,我在终端中得到了下面的错误。您认为我应该对上面的代码进行哪些改进来解析每个设备的imsi元素?谢谢。在

^{pr2}$

在引入根节点之后,我编写了以下代码,最终得到了一个奇怪的输出。你觉得这里有什么问题吗?在

     doc = xml.dom.minidom.parse("./input.xml") 
     for node in doc.getElementsByTagName("device"):
         imsi = node.getElementsByTagName("imsi") 
         print str(imsi) 

    [<DOM Element: imsi at 0x828636c>] 
    [<DOM Element: imsi at 0x82864ac>]  
    [<DOM Element: imsi at 0x828660c>] 

我的代码正确地解决了以下问题:

    for node in doc.getElementsByTagName("device"):
        imsi = node.getElementsByTagName("imsi")
        for a in imsi:
                Title= a.firstChild.data
                print Title

Tags: 代码innode元素fordocdevicexml
2条回答

您的xml无效。在xml中插入根节点。在

您可以在此处检查有效性W3C Markup Validator。在

<document>
    <device>
      <imsi>01010101</imsi>  
    </device>
    <device>
      <imsi>123456</imsi>
    </device>
    <device>
      <imsi>9876543</imsi>
    </device>
</document>

如果您希望xml完全有效,请将document type declaration添加到其中。在

您的示例不是有效的XML文档,因为它没有根节点。插入一个可以得到

<devices>
  <device>
    <imsi>01010101</imsi>  
  </device>
  <device>
    <imsi>123456</imsi>
  </device>
  <device>
    <imsi>9876543</imsi>
  </device>
</devices>

相关问题 更多 >