`
忧里修斯
  • 浏览: 432577 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Python使用xml.etree.ElementTree解析xml文件

阅读更多
示例一、
data.xml
<?xml version="1.0" encoding="utf-8"?>

<info>
	<intro>保存用户的信息</intro>
	<list id='001'>
		<head>jiaoshe_15</head>
		<name>小丸子</name>
		<number>12345678</number>
		<age>44</age>
		<sex>女</sex>
		<hobby>上网,打游戏</hobby>
		<note>我是一个来自广东深圳的女十,我期待和喜爱运动的你成为朋友</note>
	</list>
	<list>
		<head>jiaoshe_12</head>
		<name>功夫老伯</name>
		<number>aa33678</number>
		<age>78</age>
		<sex>男</sex>
		<hobby>功夫</hobby>
		<note>我是一个老伯,我期待和喜爱运动的你成为朋友</note>
	</list>
</info>


readxml.py
#!/usr/bin/env python
# -*- coding: UTF-8  -*-
'''
Created on 2010-4-14

@author: Administrator
'''
import os
import xml.etree.ElementTree as ET

#读取xml文件
def load_xml_file(filename):
    root = ET.parse(filename).getroot()
    #获取文件描述
    intro = root.find('intro').text
    print intro
    all_users = root.findall('list')
    for user in all_users:
        head = user.find('head').text
        name = user.find('name').text
        sex = user.find('sex').text
        print head,name,sex
        
        
if __name__ == '__main__':
    
    workpath = os.getcwd()
#    print workpath
    load_xml_file(r'%s\webUI\data\data.xml' % workpath)


   
输出结果
保存用户的信息
jiaoshe_15 小丸子 女
jiaoshe_12 功夫老伯 男


示例二、
1、需要解析的文件app.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
 <!-- 建立数据源 -->
 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  <!-- 数据库驱动,我这里使用的是Mysql数据库 -->
  <property name="driverClassName">
   <value>com.mysql.jdbc.Driver</value>
  </property>
  <!-- 数据库地址,这里也要注意一下编码,不然乱码可是很郁闷的哦! -->
  <property name="url">
   <value>
       jdbc:mysql://localhost:3306/tie?useUnicode=true&amp;characterEncoding=utf-8
   </value>
  </property>
  <!-- 数据库的用户名 -->
  <property name="username">
   <value>root</value>
  </property>
  <!-- 数据库的密码 -->
  <property name="password">
   <value>123</value>
  </property>
 </bean>
 <!-- 把数据源注入给Session工厂 -->
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <!-- 配置映射文件 -->
  <property name="mappingResources">
   <list>
    <value>com/alonely/vo/User.hbm.xml</value>
   </list>
  </property>
 </bean>
 <!-- 把Session工厂注入给hibernateTemplate -->
 <!-- 解释一下hibernateTemplate:hibernateTemplate提供了很多方便的方法,在执行时自动建立 HibernateCallback 对象,例如:load()、get()、save、delete()等方法。 -->
 <bean id="hibernateTemplate"
  class="org.springframework.orm.hibernate3.HibernateTemplate">
  <constructor-arg>
   <ref local="sessionFactory" />
  </constructor-arg>
 </bean>
 <!-- 把DAO注入给Session工厂 -->
 <bean id="userDAO" class="com.alonely.dao.UserDAO">
  <property name="sessionFactory">
   <ref bean="sessionFactory" />
  </property>
 </bean>
 <!-- 把Service注入给DAO -->
 <bean id="userService" class="com.alonely.service.UserService">
  <property name="userDAO">
   <ref local="userDAO" />
  </property>
 </bean>
 <!-- 把Action注入给Service -->
 <bean name="/user" class="com.alonely.struts.action.UserAction">
  <property name="userService">
   <ref bean="userService" />
  </property>
 </bean>
</beans>


2、解析的代码etXml.py
# -*- coding:UTF-8 -*-

import xml.etree.ElementTree as ET

#获取所有<bean>节点
def getAllBean():
    root = ET.parse('app.xml').getroot()
    beans = root.findall('bean')
    
    #显示所有bean
    for bean in beans:
#        print ET.tostring(bean, 'UTF-8')
#        print '==========================================='
        pass

    return beans;
        
#获取所有property节点,以字典的的形式返回,属性名/property节点
def getAllProperty():
    beans = getAllBean()
    propList = {}
    for bean in beans:
        propertysE = bean.findall('property')
        for prop in propertysE:
            proname = prop.get('name')
            propList[proname] = prop
#            print ET.tostring(prop, 'UTF-8')
#            print '==========================================='
    return propList
        

#根据bean的属性id获取bean的class属性值
def getBeanClassAttr(beanid):
    bean = getBeanById(beanid)
    return bean.get('class')#获取节点属性为class的值

#根据id获取bean节点
def getBeanById(beanid):
    beans = getAllBean()
    for bean in beans:
        id = bean.get('id')#获取属性名为id的值
        if beanid == id:
            return bean

#根据bean的属性id获取其所有property节点
def getPropertysByBeanid(beanid):
    bean = getBeanById(beanid)
    props = bean.findall('property')
    return props;
    
#根据bean的属性id和property的名称获取实际值
def getPropertyValue(beanid,proname):
    props = getPropertysByBeanid(beanid)
    for prop in props:
        name = prop.get('name')
        if proname == name:
            valueE = prop.find('value')
            if valueE != None:
                return valueE.text


if __name__ == '__main__':
    
    print getPropertyValue('userService','userDAO')


分享到:
评论

相关推荐

    Python3 xml.etree.ElementTree支持的XPath语法详解

    Python3的xml.etree.ElementTree模块提供了一个XML处理...了解并熟练运用XPath与Python3的xml.etree.ElementTree模块相结合,可以有效地解析和操作XML数据,尤其在处理复杂XML结构时,能够提高代码的简洁性和可读性。

    9.7. xml.etree.ElementTree — ElementTree XML的接口(翻译).pdf

    Python是一种流行的编程语言,它通过内置的xml.etree.ElementTree模块为处理XML文档提供了一种简单而有效的方法。 xml.etree.ElementTree模块是Python的标准库中的一个组件,它提供了一种处理XML数据的机制。它允许...

    python xml.etree.ElementTree遍历xml所有节点实例详解

    ### Python 使用 `xml.etree.ElementTree` 遍历 XML 所有节点的详细解析 在本篇文章中,我们将深入探讨如何使用 Python 的内置库 `xml.etree.ElementTree` 来遍历 XML 文件中的所有节点,并提取所需的信息。通过一...

    Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法

    Python提供了多种库来处理XML文件,其中最常用的两个模块是`xml.dom.minidom`和`xml.etree.ElementTree`。本文将详细介绍这两个模块在解析XML文件时的应用,并展示如何封装函数以实现特定的查询功能。 首先,`xml....

    python_elementt_xml.zip_python xml_xml解析 python

    在提供的`python使用elementtree模块解析xml.txt`文档中,应包含了使用`ElementTree`解析XML的详细代码示例。通过学习这些代码,你可以理解如何根据实际需求处理XML数据。实践中,可能涉及更复杂的操作,如处理命名...

    Python创建xml文件示例

    在Python中创建XML文件是通过使用内置的`xml.etree.ElementTree`模块来实现的。这个模块提供了方便的API来创建、解析和处理XML数据。本示例将详细讲解如何利用`ElementTree`来创建一个XML文件。 首先,导入所需的...

    python生成xml

    `xml.etree.ElementTree` 是 Python 内置的标准 XML API,它提供了 XML 文档的解析和生成功能。下面我们将详细介绍如何使用这个模块生成 XML。 #### 1. 创建 Element 对象 在 `ElementTree` 中,XML 文档由 `...

    用Python解析XML文件的软件实现.zip

    在Python中,常用的XML解析库有`xml.dom.minidom`、`ElementTree`(包括`xml.etree.ElementTree`和`cElementTree`)以及`lxml`。下面我们将逐一介绍这些库的使用方法。 1. **xml.dom.minidom** `xml.dom.minidom`...

    python根据excel表修改xml.rar

    在本场景中,它被用来读取Excel文件(通常由pandas库处理)并操作XML文件(可能使用lxml或xml.etree.ElementTree库)。 1. **pandas库**:pandas是Python中用于数据分析的核心库,它提供了一个叫做DataFrame的数据...

    python_XML-6-17.rar_python 文件_python xml_python读写xml_python读写xm

    总之,Python的`xml.etree.ElementTree`模块为处理XML文件提供了一套完整的工具。无论你是要读取XML数据,还是创建新的XML文档,甚至是进行复杂的XML数据解析,这个模块都能满足需求。通过熟练掌握这些基本操作,你...

    Python读写XML文件实例

    首先,Python中处理XML文件最常用的库是`xml.etree.ElementTree`,它提供了一套完整的API来解析和构建XML文档。`ElementTree`库主要包含两个模块:`ElementTree`和`Element`。`ElementTree`用于处理整个XML文档,而`...

    Python解析创建xml文件的代码

    这个脚本通常会使用Python的`xml.etree.ElementTree`模块来创建XML文件。`ElementTree`模块提供了一个高级接口,用于解析和生成XML数据。以下是一个简单的例子: ```python import xml.etree.ElementTree as ET # ...

    python解析xml文件

    import xml.etree.ElementTree as ET ``` ##### 基本用法 1. **解析 XML 文件**: 使用`ET.parse()`方法读取XML文件,并返回一个`ElementTree`对象。 ```python tree = ET.parse("data.xml") root = tree.get...

    python对XML文件的操作实现代码

    Python中的XML操作主要依赖于`xml.etree.ElementTree`库,该库提供了创建、解析、修改和删除XML文档的功能。让我们深入探讨这些操作的具体实现。 1. **XML创建** 创建XML文档首先需要导入`ElementTree`模块,然后...

    python文件对比 xml、excel

    对于XML文件,Python内置了`xml.etree.ElementTree`模块,它提供了解析和生成XML文档的功能。对于Excel文件,我们可以使用pandas库,它支持读写Excel文件,并且在处理表格数据时非常强大。 1. **读取XML文件**: ...

    python读取xml文件代码

    在Python中,我们可以使用内置的`xml`模块来处理XML文件,特别是`xml.etree.ElementTree`子模块,它提供了方便的API来解析和操作XML文档。首先,我们需要导入`ElementTree`模块: ```python import xml.etree....

    pp.zip_python xml_python读写xml_读写 python

    总结来说,Python的`xml.etree.ElementTree`模块提供了一套强大的工具,使得XML文件的读写、修改和查询变得简单易行。无论你是新手还是经验丰富的开发者,掌握这些技能都将极大地提升你在处理结构化数据时的效率。

Global site tag (gtag.js) - Google Analytics