美文网首页
Py自动化运维-XML解析(二)

Py自动化运维-XML解析(二)

作者: RoninW | 来源:发表于2020-06-11 17:43 被阅读0次

    Py自动化运维解析XML共有三种方法:

    2.DOM(Document Object Model)

    文本对象模型是W3C组织推荐的处理可扩展置标语言的标准编程接口,一个DOM的解析器在解析在解析一个XML文档时,一次性读取整个文档,把文档中所有元素保存在内存的一个树结构中,之后利用DOM提供的不同函数读取或修改文档的内容和结构,也可以把修改过的内容写入XML文件。

    XML例子见上期。Py自动化运维-XML解析(一)

    代码如下:

     from xml.dom.minidom import parse

    import xml.dom.minidom

    #使用minidom解析器打开XML文档

    DOMTREE = xml.dom.minidom.parse("example.xml")

    collection = DOMTREE.documentElement

    if collection.hasAttribute("year"):

        print(f"早餐菜单 \n 年份 {collection.getAttribute('year')}")

    #在集合中获取所有信息

    foods = collection.getElementsByTagName("food")

    #打印详细信息

    for food in foods:

        type = food.getElementsByTagName("name")[0]

        print("name: %s" % type.childNodes[0].data)

        type1 = food.getElementsByTagName("price")[0]

        print("price: %s" % type1.childNodes[0].data)

        type2 = food.getElementsByTagName("desc")[0]

        print("desc: %s" % type2.childNodes[0].data)

    代码说明�:

    代码使用minidom解析器打开XML文档,使用getElementsByTagName方法获取所有标签并遍历子标签,逻辑上比SAX要直观。运行如下图:

    3.ElemengtTre

    ElementTre将XML数据在内存中解析成树,通过树来操作XML。

    XML例子不变

    代码如下:

    import xml.etree.ElementTree as ET

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

    root= tree.getroot()

    print(f"早餐菜单 \n 年份 {root.attrib['year']}")

    for child in root:

        print("name:", child[0].text)

        print("price:", child[1].text)

        print("desc:", child[2].text)

    代码特别简洁,在需要获取XML内全部信息时,推荐使用。

    运行结果同DOM 完全一致。

    XML解析的三种方式完结。工作中需要根据面对的不用场景选择合适的方法。例如:获取某个网页的全部信息,若该网站内容详情页模版是统一的,就可以用方法三来完成,代码量少,且减轻后续对数据解析的困难度。

    相关文章

      网友评论

          本文标题:Py自动化运维-XML解析(二)

          本文链接:https://www.haomeiwen.com/subject/woobtktx.html