python中minidom对xml的常用处理

原创 2012年03月23日 19:36:00

#_*_encoding:utf-8_*_

# -- seanyxie  2012.3.23 --

# ===minidom操作XML代码示例
import xml
from xml.dom import minidom
import codecs

# ==由于minidom默认的writexml()函数在读取一个xml文件后,修改后重新写入如果加了newl='\n',会将原有的xml中写入多余的行
#  ==因此使用下面这个函数来代替
def fixed_writexml(self, writer, indent="", addindent="", newl=""):
    # indent = current indentation
    # addindent = indentation to add to higher levels
    # newl = newline string
    writer.write(indent+"<" + self.tagName)

    attrs = self._get_attributes()
    a_names = attrs.keys()
    a_names.sort()

    for a_name in a_names:
        writer.write(" %s=\"" % a_name)
        minidom._write_data(writer, attrs[a_name].value)
        writer.write("\"")
    if self.childNodes:
        if len(self.childNodes) == 1 \
          and self.childNodes[0].nodeType == minidom.Node.TEXT_NODE:
            writer.write(">")
            self.childNodes[0].writexml(writer, "", "", "")
            writer.write("</%s>%s" % (self.tagName, newl))
            return
        writer.write(">%s"%(newl))
        for node in self.childNodes:
            if node.nodeType is not minidom.Node.TEXT_NODE:
                node.writexml(writer,indent+addindent,addindent,newl)
        writer.write("%s</%s>%s" % (indent,self.tagName,newl))
    else:
        writer.write("/>%s"%(newl))

minidom.Element.writexml = fixed_writexml


def opXml():
    # =====从一个空xml文档开始
    impl = xml.dom.getDOMImplementation()
    dom = impl.createDocument(None,'All_Students',None)
    root = dom.documentElement
    # --创建一个节点,并添加到root下
    student = dom.createElement('student')
    root.appendChild(student)
    # --创建一个子节点,并设置属性
    nameE = dom.createElement('name')
    value = u'陈奕迅'
    nameE.setAttribute("attr",value)
    nameN = dom.createTextNode(value)
    nameE.appendChild(nameN)
    student.appendChild(nameE)
    
    # -- 写进文件,如果出现了unicode,指定文件的编码
    f = codecs.open('1.xml','w','utf-8')
    dom.writexml(f,addindent='  ',newl='\n',encoding = 'utf-8')
    f.close()
    
    #=====处理一个已经存在的xml文档
    dom = xml.dom.minidom.parse("1.xml")
    root = dom.documentElement
    #  -- 重新设置属性
    # --- 返回所有node name为student的节点
    allnodes = dom.getElementsByTagName('student')
    value = u'王力宏'
    for node in allnodes:
        node.setAttribute('name',value)
    # --删除节点属性
    for node in allnodes:
        node.removeAttribute('name')
    # --每个节点有 nodeType,nodeName,和nodeVaulue 等属性
    # --对于textNode,想得到它的文本内容可以使用: .data属性
        print node.nodeType,node.nodeValue
    # --也可以删除节点
        root.removeChild(node)
    f = codecs.open('1.xml','w','utf-8')
    dom.writexml(f,addindent='  ',newl='\n',encoding = 'utf-8')
    f.close()


if __name__=='__main__':
    opXml()

上面的代码包含了python中minidom操作xml的常用操作



相关文章推荐

使用minidom来处理XML的示例(Python 学习)(转载)

http://www.cnblogs.com/xuxm2007/archive/2011/01/16/1936610.html http://blog.csdn.net/...

python-minidom模块【解析xml】

http://zc0604.iteye.com/blog/1520703 http://www.cnblogs.com/rirtue/archive/2012/01/12/2321028.html ...

python处理类xml文件遇到的坑

首先先确定xml文件有两个特点容易忽视, 1、xml文件有且只有一个根节点 2、xml文件的标签的属性都有引号“” 由于对xml文件不熟,并且对python处理xml文件不熟,故这两个坑用...

Python xml属性/节点/文本的增删改[xml.etree.ElementTree]

http://blog.csdn.net/wklken/article/details/7603071 ======================== 需求: 在实际应用中,需要对xml配...

python对XML 操作

一.XML的读取. 在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容。在缺省情况下都是用XML格式保存的。下面我讲述一下,如何使用minidom来读取和保存XML文件。...

idea2016中tomcat配置及运行

一、idea2016中tomcat配置及运行 接触下新的ide工具idea2016配置java web环境费了些功夫,特别是tomcat的配置,现记录如下,直接上图。 1.run配置 ...

JAVA文件/文件夹操作实用函数

列举了一些这个项目中用到的文件/文件夹操作的函数,以备后用。/** * 计算文件夹大小 */public static final long getDirectorySize( File dir ) ...
  • nataku
  • nataku
  • 2007年06月15日 12:25
  • 2211

使用minidom来处理XML的示例(Python 学习)

使用minidom来处理XML的示例(Python 学习)(转载) 作者网站:http://www.donews.net/limodou/archive/2004/07/15/43609.asp...

Python网络编程基础笔记-使用minidom生成XML文件

1.使用minidom创建XML文件 # -*- coding: cp936-*- """ 使用minidom生成XML 1.创建Element,createEle...

使用python的minidom模块格式化、对齐、换行、整理xml文件

#_*_encoding:utf-8_*_ # -- seanyxie 2012.3.23 -- # ===minidom操作XML代码示例 import xml from xml.do...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中minidom对xml的常用处理
举报原因:
原因补充:

(最多只允许输入30个字)