python读取xml数据库中表内所有数据,获取数据库中所有表的字段名称
来源:互联网 发布:网络平台运营方案模板 编辑:程序博客网 时间:2024/04/29 18:11
工作中需要读取指定xml数据库中的数据以及 表所需字段名,所以在已有例子中改进实现:
xml 数据库 xmldabase.xml:
<database><manifest><pair key="schema_major_vsn" value="5"/><pair key="schema_minor_vsn" value="63"/><pair key="generation_count" value="8541968"/></manifest><table name="PCI"><row ref="OpaqueRef:1e2c98ee-a6fe-b1d5-e91c-d27911deb21d" __ctime="8489729" __mtime="8489775" _ref="OpaqueRef:1e2c98ee-a6fe-b1d5-e91c-d27911deb21d" attached_VMs="()" class_id="03" class_name="Display controller" dependencies="()" device_id="2000" device_name="ASPEED Graphics Family" functions="1" host="OpaqueRef:d92d7211-482f-c68f-f89b-4c8b22faec1a" other_config="()" pci_id="0000:09:00.0" uuid="5907d30d-7d53-4682-4ff1-ed32974cb3b6" vendor_id="1a03" vendor_name="ASPEED Technology, Inc."/></table><table name="xx_metrics"><row ref="OpaqueRef:5105a1b6-a689-15a9-708d-57417c69d4b4" __ctime="8489729" __mtime="8490755" _ref="OpaqueRef:5105a1b6-a689-15a9-708d-57417c69d4b4" carrier="true" device_id="10d3" device_name="82574L Gigabit Network Connection" duplex="true" io__read_kbs="0." io__write_kbs="0." last_updated="20130508T00:02:46Z" other_config="()" pci_bus_path="0000:06:00.0" speed="1000" uuid="a26a8b42-b4c1-1b3c-1236-ea62d2d05236" vendor_id="8086" vendor_name="Intel Corporation"/><row ref="OpaqueRef:63f81794-55b1-af60-5225-900673b300d2" __ctime="8489729" __mtime="8490752" _ref="OpaqueRef:63f81794-55b1-af60-5225-900673b300d2" carrier="false" device_id="10d3" device_name="82574L Gigabit Network Connection" duplex="false" io__read_kbs="0." io__write_kbs="0." last_updated="20130508T00:02:46Z" other_config="()" pci_bus_path="0000:07:00.0" speed="65535" uuid="74bc3019-9c04-ca9d-6ea8-3be63840620d" vendor_id="8086" vendor_name="Intel Corporation"/><row ref="OpaqueRef:a0e992d8-5293-581a-0ad1-2b9a00c53d2a" __ctime="8489729" __mtime="8490754" _ref="OpaqueRef:a0e992d8-5293-581a-0ad1-2b9a00c53d2a" carrier="true" device_id="10d3" device_name="82574L Gigabit Network Connection" duplex="true" io__read_kbs="0." io__write_kbs="0." last_updated="20130508T00:02:46Z" other_config="()" pci_bus_path="0000:06:00.0" speed="1000" uuid="fc9d0a76-eb60-dfc8-18b6-bfe26fe8be9d" vendor_id="8086" vendor_name="Intel Corporation"/><row ref="OpaqueRef:f9374ed7-316b-0f53-92d1-f7f70823f6ce" __ctime="8489729" __mtime="8490753" _ref="OpaqueRef:f9374ed7-316b-0f53-92d1-f7f70823f6ce" carrier="true" device_id="10d3" device_name="82574L Gigabit Network Connection" duplex="true" io__read_kbs="0." io__write_kbs="0." last_updated="20130508T00:02:46Z" other_config="()" pci_bus_path="0000:06:00.0" speed="1000" uuid="e4f38332-1317-b9df-07f9-ab5681569c91" vendor_id="8086" vendor_name="Intel Corporation"/></table></database>
获取指定表的数据:
from xml.etree import ElementTreedef get_table_records( xmlfile = None,text = None,table_name=None): root=None if xmlfile: root = ElementTree.parse(xmlfile) elif text: root = ElementTree.fromstring(text) node_findall = root.findall("table") for e in node_findall: for key,value in e.items(): if value==table_name: print( "%s:%s" % (key, value) ) ar=e.findall('row') for row in ar: for k,v in row.items(): print( "%s:%s" % (k, v) )
获取所有表的字段名称:
def get_table_field(text =None, xmlfile =None): root=None if xmlfile: root = ElementTree.parse(xmlfile) elif text: root = ElementTree.fromstring(text) node_findall = root.findall("table") for e in node_findall: list_field=[] for key,value in e.items():# print( "%s:%s" % (key, value) ) first_row=e.find('row')# print(type(first_row)) if first_row==None : print('%s_need_fields=%s'%(value,list_field))# continue else: for k,v in first_row.items(): list_field.append(k) # print( "%s:%s" % (k, v) ) print('%s_need_fields=%s'%(value,list_field))
测试用例:
if __name__ == '__main__': # get_table_records(text=open("xmldabase.xml").read(),table_name='PCI') #获取xml的方式不同,皆可用 get_table_records(xmlfile="xmldabase.xml",table_name='PCI') get_table_field(xmlfile="xmldabase.xml")
输出结果:
name:PCIclass_name:Display controllervendor_id:1a03__mtime:8489775host:OpaqueRef:d92d7211-482f-c68f-f89b-4c8b22faec1adependencies:()_ref:OpaqueRef:1e2c98ee-a6fe-b1d5-e91c-d27911deb21ddevice_id:2000functions:1uuid:5907d30d-7d53-4682-4ff1-ed32974cb3b6class_id:03other_config:()__ctime:8489729pci_id:0000:09:00.0device_name:ASPEED Graphics Familyattached_VMs:()vendor_name:ASPEED Technology, Inc.ref:OpaqueRef:1e2c98ee-a6fe-b1d5-e91c-d27911deb21dPCI_need_fields=['class_name', 'vendor_id', '__mtime', 'host', 'dependencies', '_ref', 'device_id', 'functions', 'uuid', 'class_id', 'other_config', '__ctime', 'pci_id', 'device_name', 'attached_VMs', 'vendor_name', 'ref']xx_metrics_need_fields=['last_updated', 'vendor_id', '__mtime', '_ref', 'device_name', 'speed', 'device_id', 'uuid', 'duplex', 'other_config', '__ctime', 'pci_bus_path', 'io__write_kbs', 'carrier', 'io__read_kbs', 'vendor_name', 'ref']
- python读取xml数据库中表内所有数据,获取数据库中所有表的字段名称
- SQLSERVER获取数据库中的所有表的名称、表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- SQLSERVER 2008 如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- 查询数据库中表中所有的字段名
- 取数据库所有表的名称及指定表中所有字段的名称SQL
- 获取SQL数据库中某个表中的所有字段名称的通用方法
- SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL
- SQL Server 中获取数据库所有表及其字段名称、类型、长度的SQL
- java获取MYSQL5。0中所有数据库中表的列表
- Yoga支撑PC+,联想引领传统PC突围
- JAVA从入门到提高—程序设计基础02
- 水晶报表
- C++ 用libcurl库进行http通讯网络编程
- kmp 填空
- python读取xml数据库中表内所有数据,获取数据库中所有表的字段名称
- SQL 2005 sa 密码修改
- Objective-C中NSDate,NSData类型与NSString类型转换
- C#获取网页内容的三种方式
- chapter2 算法——程序的灵魂
- Cocos2D与UIViewController混用
- 各种环境
- 中科院、腾讯、深圳明源研发团队管理经验分享
- ExecutorService常用方法和newFixedThreadPool创建固定大小的线程池