您的位置:首页 > 编程语言 > Python开发

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的参考。

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配置文件的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: