Python解析xml-pybatis的准备阶段(八)
2013-03-10 15:35
477 查看
一直以来都是用xml.dom.minidom来解析xml的。
重点关注一下nodeType。
nodeType是结点的类型,现在有以下几种:
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
这些结点通过名字很好理解。
其中'CDATA_SECTION_NODE'是CDATA节点。在xml中,CDATA是为了防止特殊符号影响xml而设计的。
下面贴两段pybatis研发中的代码供minidom的参考。
这两段代码是处理pybatis配置文件的。
重点关注一下nodeType。
nodeType是结点的类型,现在有以下几种:
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
这些结点通过名字很好理解。
其中'CDATA_SECTION_NODE'是CDATA节点。在xml中,CDATA是为了防止特殊符号影响xml而设计的。
下面贴两段pybatis研发中的代码供minidom的参考。
def handleOneSqlMapFile(sqlmapFilePath): dom = xml.dom.minidom.parse(sqlmapFilePath) sqlmaproot = dom.documentElement #=============================================================================== # 处理namespace属性。根据namespace属性,放置到一个列表中,供用数据反射生成对象的时候使用 #=============================================================================== parseNameSpace(sqlmaproot) #=============================================================================== # 先处理typeAlias。找到所有的typeAlias节点 #=============================================================================== typeAliasElements = sqlmaproot.getElementsByTagName("typeAlias") parseTypeAlias(typeAliasElements, sqlmapFilePath) #=============================================================================== # 找到select节点 #=============================================================================== selectsElements = sqlmaproot.getElementsByTagName("select") parseSelectXMLNode(selectsElements, sqlmapFilePath) #=============================================================================== # update #=============================================================================== updateElements = sqlmaproot.getElementsByTagName("update") parseUpdateXMLNode(updateElements, sqlmapFilePath) #=============================================================================== # 找到insert节点 #=============================================================================== insertElements = sqlmaproot.getElementsByTagName("insert") parseInsertXMLNode(insertElements, sqlmapFilePath) #=============================================================================== # 找到delete节点 #=============================================================================== deleteElements = sqlmaproot.getElementsByTagName("delete") parseDeleteXMLNode(deleteElements, sqlmapFilePath) def parseSqlMapConfig(filepath): dom = xml.dom.minidom.parse(filepath) root = dom.documentElement #=============================================================================== # 处理数据库连接池和事务管理 #=============================================================================== tmelement = root.getElementsByTagName('transactionManager') if len(tmelement) > 1: raise Exception('multi transactionManager found.') parseTransactionManagerAndDBSource(tmelement) #=========================================================================== # 找到所有的映射文件 #=========================================================================== sqlmaps = root.getElementsByTagName('sqlMap') for sqlmap in sqlmaps: #======================================================================= # 找到sqlmap文件 #======================================================================= sqlmapfilepath = get_attrvalue(sqlmap, 'resource') #======================================================================= # 处理这个sqlmap文件 #======================================================================= handleOneSqlMapFile(sqlmapfilepath)
这两段代码是处理pybatis配置文件的。
相关文章推荐
- Python解析xml文件-pybatis的准备阶段(二)
- Python中动态导入模块-pybatis的准备阶段(七)
- Python中的反射(自省)-pybatis的准备阶段(一)
- Python接口与类继承学习-pybatis的准备阶段(九)
- Python的多线程支持-pybatis的准备阶段(十一)
- Python操作MySql-pybatis的准备阶段(三)
- Python中的异常-pybatis的准备阶段(四)
- Python中Mysqldb的使用以及事务的支持-pybatis首次露面-pybatis的准备阶段(十)
- Python中的静态方法-pybatis的准备阶段(五)
- Python中globals和locals的区别-pybatis的准备阶段(六)
- python-minidom模块【解析xml】
- Python解析XML文件
- python xml.dom模块解析xml
- Python解析xml
- python对XML的解析
- python菜鸟升级路--自动化解析生成xml文件
- python解析XML之ElementTree
- 准备阶段:00 学习python的目标!
- 详细解读Python中解析XML数据的方法
- python入门(十):XML和JSON解析