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

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

作者: RoninW | 来源:发表于2020-06-09 18:25 被阅读0次

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

    1.SAX(simple API for XML)

    SAX是一种基于事件驱动的API,使用时设计两个部分,即解析器和事件处理器。解析器负责读取XML文件,并向事件处理器发送相应的事件(如元素开始事件,元素结束时间)。事件处理器对相应的事件作出相应,对数据做出处理。使用方法是先创建一个新的XMLReader对象,然后设置XMLReader的事件处理器ContentHandler,最后执行XMLReader的parse()方法

    来看一个解析XML的例子,example.xml 内容如下:

    <breakfast_menu  year="2018">

    <food>

    <name>老八秘制小汉堡</name>

    <price>5</price>

    <desc>既实惠又管饱</desc>

    </food>

    <food>

    <name>狗不理包子</name>

    <price>10</price>

    <desc>皮包馅大没有褶</desc>

    </food>

    </breakfast_menu>

    read_xml.py 如下:

    import xml.sax

    class MenuHandler(xml.sax.ContentHandler):

        def __init__(self):

            self.CurrentData = ""

            self.name = ""

            self.price = ""

            self.desc = ""

        # 元素开始调用

        def startElement(self, tag, attributes):

            self.CurrentData = tag

            if tag == "breakfast_menu":

                print("早餐菜单")

                year = attributes["year"]

                print(f"年份 {year}\n")

        # 读取字符时调用

        def characters(self, content):

            if self.CurrentData == "name":

                self.name = content

            elif self.CurrentData == "price":

                self.price = content

            elif self.CurrentData == "desc":

                self.desc = content

            else:

                pass

        # 元素结束调用

        def endElement(self, tag):

            if self.CurrentData == "name":

                print(f"name: {self.name}")

            elif self.CurrentData == "price":

                print(f"price: {self.price}")

            elif self.CurrentData == "desc":

                print(f"desc: {self.desc}")

            else:

                pass

            self.CurrentData == ""

    if __name__ == "__main__":

        # 创建一个XMLReader

        parser = xml.sax.make_parser()

        Handler = MenuHandler()

        parser.setContentHandler(Handler)

        parser.parse("example.xml")

    运行结果如下图:

    下期更新方法二

    相关文章

      网友评论

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

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