zhaimz1 发表于 2018-1-26 16:31

xml的三剑客

xml的三剑客

zhaimz1 发表于 2018-1-26 16:32

<div >
        (4)创建xml节点
</div>
<ul>
        <li >
                <span >createComment()</span> - 创建新的注释节点,并使用 appendChild() 把它添加到元素中。
        </li>
</ul>
<div >
        &gt;&gt;&gt; comment = dom.createComment('xml comment')
</div>
<div >
        &gt;&gt;&gt; dom.appendChild(comment)
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >createElement()</span> - 创建一个新的元素节点,并使用 appendChild() 把它添加到节点中。
        </li>
</ul>
<div >
        &gt;&gt;&gt; root = dom.createElement('python')
</div>
<div >
        &gt;&gt;&gt; dom.appendChild(root)
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >createAttribute()</span> - 创建新的属性节点,并使用 setAttributeNode() 把它插入到元素中。
        </li>
</ul>
<div >
        &gt;&gt;&gt; att = dom.createAttribute('pythonAtt')
</div>
<div >
        &gt;&gt;&gt; att.nodeValue = 'dataGuru'
</div>
<div >
        &gt;&gt;&gt; root.setAttributeNode(att)
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >setAttribute()</span> - 创建一个新的属性。
        </li>
</ul>
<div >
        &gt;&gt;&gt; root.setAttribute('name', 'test')
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >createTextNode()</span> - 创建新的文本节点,并使用 appendChild() 把它添加到元素中。
        </li>
</ul>
<div >
        &gt;&gt;&gt; text = dom.createTextNode('问')
</div>
<div >
        &gt;&gt;&gt; element.appendChild(text)
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >createCDATAsection()</span> - 创建 CDATA section 节点,并使用 appendChild() 把它添加到元素中。
        </li>
</ul>
<div >
        &gt;&gt;&gt; cDate = dom.createCDATASection('sdjFsljf!@#!@3`1`12`2&lt;&gt;&lt;')
</div>
<div >
        &gt;&gt;&gt; element.appendChild(cDate)
</div>
<div >
        <br />
</div>
<div >
        (5)添加xml节点
</div>
<ul>
        <li >
                <span >appendChild() </span>- 添加到元素或节点中
        </li>
</ul>
<div >
        &gt;&gt;&gt; dom.appendChild(tree)
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >setAttributeNode()</span> - 把该节点插入一个元素中。
        </li>
</ul>
<div >
        &gt;&gt;&gt; root.setAttributeNode(att)
</div>
<div >
        <br />
</div>
<div >
        (6)创建xml属性
</div>
<ul>
        <li >
                <span >setAttribute()</span> - 创建一个新的属性。
        </li>
</ul>
<div >
        <br />
</div>
<div >
        (7)追加内容
</div>
<div >
        <br />
</div>
<div >
        (8)回显xml
</div>
<ul>
        <li >
                <span >toxml()</span>
        </li>
</ul>
<div >
        &gt;&gt;&gt; dom.toxml()                # 显示不带格式
</div>
<div >
        <br />
</div>
<ul>
        <li >
                <span >toprettyxml()</span>
        </li>
</ul>
<div >
        &gt;&gt;&gt; dom.toprettyxml()                # 显示带格式
</div>
<div >
        <br />
</div>
<div >
        (9)写入xml文件
</div>
<ul>
        <li >
                <span >writexml()</span>
        </li>
</ul>
<div >
        &gt;&gt;&gt; f = open(r'd:/xml.txt', 'w')
</div>
<div >
        &gt;&gt;&gt; dom.writexml(f)
</div>
<div >
        &gt;&gt;&gt; f.close()
</div>
<div >
        <br />
</div>
<div >
        (10)读取xml文件
</div>
<ul>
        <li >
                <span >parse() </span>- 从xml文件得到dom对象
        </li>
</ul>
<div >
        &gt;&gt;&gt; dom = minidom.parse(r'd:/xml.txt')
</div>
<div >
        &gt;&gt;&gt; xml = dom.toxml().encode('utf-8')
</div>
<div >
        &gt;&gt;&gt; print xml
</div>
<div >
</div>
<ul>
        <li >
                <span >parseString() </span>- 从xml字符串得到dom对象
        </li>
</ul>
<div >
        &gt;&gt;&gt; dom2 = minidom.parseString(xml)
</div>
<div >
        &gt;&gt;&gt; print dom2.toprettyxml()
</div>
<div >
        <br />
</div>
<div >
        (11)获取根节点
</div>
<div >
        &gt;&gt;&gt; root = dom.documentElement
</div>
<div >
        &gt;&gt;&gt; root = dom.getElementsByTagName('python')
</div>
<div >
        <br />
</div>
<div >
        (12)获取子节点
</div>
<div >
        &gt;&gt;&gt; childs = dom.childNodes
</div>
<div >
        <br />
</div>
<div >
        (13)获取节点类型
</div>
<div >
        &gt;&gt;&gt; childs = dom.childNodes
</div>
<div >
        &gt;&gt;&gt; for i in childs:
</div>
<div >
        &gt;&gt;&gt;                print i.nodeType
</div>
<div >
        <br />
</div>
<div >
        (14)获取节点名称
</div>
<div >
        &gt;&gt;&gt; childs = dom.childNodes
</div>
<div >
        &gt;&gt;&gt; for i in childs:
</div>
<div >
        &gt;&gt;&gt;                print i.nodeName
</div>
<div >
        <br />
</div>
<div >
        (15)获取节点值
</div>
<div >
        &gt;&gt;&gt; childs = dom.childNodes
</div>
<div >
        &gt;&gt;&gt; for i in childs:
</div>
<div >
        &gt;&gt;&gt;                print i.nodeValue
</div>
<div >
        <br />
</div>
<div >
        (16)获取节点属性
</div>
<div >
        &gt;&gt;&gt; py = dom.getElementsByTagName('python')
</div>
<div >
        &gt;&gt;&gt; print py.getAttribute('name')
</div>

zhaimz1 发表于 2018-1-26 16:35

xml.dom xml.etree xml.sax<br />

zhaimz1 发表于 2018-1-26 16:36

xml.dom xml.etree xml.sax 个人还是比较喜欢dom.或者xpath<br />

wayneshen730 发表于 2018-3-26 16:03

:right: 厉害,谢谢分享!!!
页: [1]
查看完整版本: xml的三剑客