python使用dom操作xml

发布时间:2019-08-26 07:21:34编辑:auto阅读(1831)


    1、xml的内容为del.xml,如下

    <?xml version="1.0" encoding="utf-8"?>
    <catalog>
        <maxid>4</maxid>
        <login username="pytest" passwd='123456'>
            <caption>Python</caption>
            <item id="4">
                <caption>test</caption>
            </item>
        </login>
        <item id="2">
            <caption>Zope</caption>
        </item>
    </catalog>

    2、python的代码如下

    #1、获得标签属性
    print("#1、获得标签属性")
    import xml.dom.minidom
    dom = xml.dom.minidom.parse("del.xml") #打开xml文档
    root = dom.documentElement #得到xml文档
    print("nodeName:",root.nodeName)  #
    print("nodeValue:",root.nodeValue)
    print("nodeType:",root.nodeType)
    print("ELEMENT_NODE:",root.ELEMENT_NODE)
    
    #2、获得子标签
    print("#2、获得子标签")
    bb = root.getElementsByTagName('maxid')
    print(type(bb))
    print(bb)
    b = bb[0]
    print(b.nodeName)
    print(b.nodeValue)
    
    #3、获取标签属性值
    print("#3、获取标签属性值")
    itemlist = root.getElementsByTagName('login')
    item =itemlist[0]
    print(item.getAttribute("username"))
    print(item.getAttribute("passwd"))
    itemlist = root.getElementsByTagName('item')
    item = itemlist[0]           #通过在itemlist中的位置区分
    print(item.getAttribute("id"))
    item_1 = itemlist[1]        #通过在itemlist中的位置区分
    print(item_1.getAttribute("id"))
    
    #4、获得标签对之间的数据
    print("#4、获得标签对之间的数据")
    itemlist1 = root.getElementsByTagName('caption')
    item1 = itemlist1[0]
    print(item1.firstChild.data)
    item2 = itemlist1[1]
    print(item2.firstChild.data)
    
    #5总结
    # minidom.parse(filename)
    # 加载读取XML文件
    #
    # doc.documentElement
    # 获取XML文档对象
    #
    # node.getAttribute(AttributeName)
    # 获取XML节点属性值
    #
    # node.getElementsByTagName(TagName)
    # 获取XML节点对象集合
    #
    # node.childNodes  # 返回子节点列表。
    #
    # node.childNodes[index].nodeValue
    # 获取XML节点值
    #
    # node.firstChild
    # # 访问第一个节点。等价于pagexml.childNodes[0]

    3、运行的结果如下

    #1、获得标签属性
    nodeName: catalog
    nodeValue: None
    nodeType: 1
    ELEMENT_NODE: 1
    #2、获得子标签
    <class 'xml.dom.minicompat.NodeList'>
    [<DOM Element: maxid at 0x5b5af8>]
    maxid
    None
    #3、获取标签属性值
    pytest
    123456
    4
    2
    #4、获得标签对之间的数据
    Python
    test



关键字