猿问

如果使用 minidom 在 python 中找不到标签,则继续 xml 解析



示例 XML 文档

<Authors>

    <Author>

        <LastName>def</LastName>

        <age>20</age>

    </Author>

    <Author>

        <ForeName>ghi</ForeName>

        <age>22</age>

    </Author>

    <Author>

        <ForeName>mno</ForeName>

        <LastName>pqr</LastName>

        <age>23</age>

    </Author>

</Authors>

样本输出

Author:

FirstName :  -

LastName :  def


Author:

FirstName :  ghi

LastName : - 


Author:

FirstName :  mno

LastName :  pqr

示例代码

import xml.dom.minidom

# use the parse() function to load and parse an XML file

doc = xml.dom.minidom.parse("sampleinput.xml");

auth = doc.getElementsByTagName('Author')

for a in auth:

    print("Author:")

    try:

        print("FirstName : ",a.getElementsByTagName("ForeName")[0].firstChild.data)

    except:

        print("FirstName : - ")

    try:

        print("LastName : ",a.getElementsByTagName("LastName")[0].firstChild.data)

    except:

        print("LastName : - ")

如果找不到相应的标签,我想插入一个“-”符号。有没有其他可靠的方法可以做到这一点而不是尝试和排除?


开满天机
浏览 266回答 1
1回答

动漫人物

有!因此,让我们看看a.getElementsByTagName如果它不包含您的目标元素,当您实际运行时会发生什么。for a in auth:&nbsp; &nbsp; print(a.getElementsByTagName("ForeName"))>>[][<DOM Element: ForeName at 0x163a17226d0>][<DOM Element: ForeName at 0x163a1722898>]是的,现在我们知道如果你尝试获取一个它没有的元素,它会返回一个空列表并且也与文档对齐:NodeList 表示节点序列。这些对象在 DOM Core 推荐中以两种方式使用:一个 Element 对象提供一个作为其子节点列表,Node 的 getElementsByTagName() 和 getElementsByTagNameNS() 方法返回具有此接口的对象以表示查询结果。现在,您可以在打印数据之前明确检查元素是否存在,而不是执行try和except循环:for a in auth:&nbsp; &nbsp; if a.getElementsByTagName("ForeName"):&nbsp; &nbsp; &nbsp; &nbsp; print("FirstName : ",a.getElementsByTagName("ForeName")[0].firstChild.data)&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; print("FirstName : - ")>>FirstName : -&nbsp;FirstName :&nbsp; ghiFirstName :&nbsp; mno这里if块检查它是否不为空,然后打印。如果NodeList为空,则打印破折号。
随时随地看视频慕课网APP

相关分类

Python
我要回答