pythonjava解释xml_Python解析XML文档

解析XML主要用到pytohn自带的XML库,其次还是lxml库

XML结构,先以一个相对简单但功能比较全的XML文档为例

dive into mark

currently between addictions

tag:diveintomark.org,2001-07-29:/

2009-03-27T21:56:07Z

Mark

http://diveintomark.org/

Dive into history, 2009 edition

href='http://diveintomark.org/archives/2009/03/27/dive-into-history-2009-edition'/>

tag:diveintomark.org,2009-03-27:/archives/20090327172042

2009-03-27T21:56:07Z

2009-03-27T17:20:42Z

Putting an entire chapter on one page sounds

bloated, but consider this — my longest chapter so far

would be 75 printed pages, and it loads in under 5 seconds…

On dialup.

Mark

http://diveintomark.org/

Accessibility is a harsh mistress

href='http://diveintomark.org/archives/2009/03/21/accessibility-is-a-harsh-mistress'/>

tag:diveintomark.org,2009-03-21:/archives/20090321200928

2009-03-22T01:05:37Z

2009-03-21T20:09:28Z

The accessibility orthodoxy does not permit people to

question the value of features that are rarely useful and rarely used.

Mark

A gentle introduction to video encoding, part 1: container formats

href='http://diveintomark.org/archives/2008/12/18/give-part-1-container-formats'/>

tag:diveintomark.org,2008-12-18:/archives/20081218155422

2009-01-11T19:39:22Z

2008-12-18T15:54:22Z

These notes will eventually become part of a

tech talk on video encoding.

先简单的看一下这个XML的结构

#这里定义了命名空间(namespace) http://www.w3.org/2005/Atom

#这里的没有text,但是里面有相应的属性

href='http://diveintomark.org/archives/2009/03/27/dive-into-history-2009-edition'/>

首先有一个全局的根元素

在根元素下面有title,subtitle,id,update,link,entry子元素

在entry元素下面还有author,title,link,id,updated,published,category,summary子元素 (姑且称为孙元素)

在author元素下面还有name,uri子元素(这该称为曾孙元素了吧~ 哈哈)

结构还是挺清晰的

下面我们用python的方法来一步步的取出在元素<>>这间的content以为元素内的属性

使用的方法主要有

tree = etree.parse() 解析XML

root = tree.getroot() 得到根元素

root.tag 根元素名称

root.attrib 显示元素的属性

root.findall() 查找元素

下面请看代码,都已经将注释与结果写在里面

import xml.etree.ElementTree as etree #将xml.etree.ElementTree引入

tree = etree.parse('feed.xml') #解析XML

root = tree.getroot()

print root

#

#元素即列表

print root.tag

#{http://www.w3.org/2005/Atom}feed

# ElementTree使用{namespace}localname来表达xml元素

for child in root:

print child

#

#

#

#

#

#

#

#

# 这里只显示一级子元素,而子元素的子元素将不会被遍历

#属性即字典

print root.attrib

#{'{http://www.w3.org/XML/1998/namespace}lang': 'en'}

#我们注意到feed下面的link这个元素有属性

print root[4].attrib

#{'href': 'http://diveintomark.org/', 'type': 'text/html', 'rel': 'alternate'}

print root[3].attrib

#{} 将会得到一个空字典,因为updated元素内没有属性值

#查找元素

entrylist = root.findall('{http://www.w3.org/2005/Atom}entry')

print entrylist

# [,

# 3.org/2005/Atom}entry at 18425d0>,

# t 1842968>]

print root.findall('{http://www.w3.org/2005/Atom}author')

# 这里将得到一个空列表,因为author不是feed的直接子元素

#查找子元素

entries = tree.findall('{http://www.w3.org/2005/Atom}entry') #先找到entry元素·

title = entries[0].find('{http://www.w3.org/2005/Atom}title')#接着再找title元素

print title.text

#'Dive into history, 2009 edition'

all_links = tree.findall('//{http://www.w3.org/2005/Atom}link') #在元素前面加'//' 则可以在所有元素里查找包括子元素和孙元素

# [,

# ,

# ,

# ]

print all_links[0].attrib #将会得到这个Link的属性字典

# {'href': 'http://diveintomark.org/',

# 'type': 'text/html',

# 'rel': 'alternate'}

关于XML库解析与查找XML文档基本的方法就这些了,现在通过一个实例来学以至用下

还是回到微信的XML解析上,微信将用户的信息POST到你的服务器上,基本形式如下

1348831860

1234567890123456

现在我们来通过上面介绍的方法来获得元素中的‘this is a test’字段

import xml.etree.ElementTree as etree

weixinxml = etree.parse('weixinpost.xml')

wroot = weixinxml.getroot()

print wroot.tag

for child in wroot:

print child.tag

if wroot.find('Content') is not None:

print wroot.find('Content').text

else:

print 'Nothing found'

这样简单几步就可以把想要的内容取出来了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

红旗linux安装oracle,Redflag Linux安装Oracle 10gR2 RAC记事

Redflag Linux安装Oracle 10gR2 RAC记事Kamus遇到过&#xff1a;SQL> startup nomountORA-27102: out of memoryLinux-x86_64 Error: 28: No space LEFT ON device这和内核参数 shmall 有关&#xff0c;修改设置 kernel.shmall 16475728 。后来离开没多久&#xff0c;客户打…

springboot开启debug日志_SpringBoot 如何优雅的打印日志?

一、打印日志注意事项1、使用 Slf4j 注解这个代码相信大家都很熟悉&#xff0c;你是否曾经看到或者自己因 copy 而 没有改变“当前类名”&#xff1f;如果你们项目用到 lombok &#xff0c;可以在类上使用 Slf4j 注解&#xff0c;省去手动写这行代码。2、不建议使用的输出为什么…

oracle导出表中某天数据命令,Oracle数据库使用命令行导入导出数据表及数据内容(本地、远程)...

一、本机导入导出1、数据库导出命令&#xff0c;导出用户userA下的表结构和数据:exp 用户名/密码服务名 owner用户名 file导出文件指定存储路径 fully2、数据库导入命令&#xff0c;将userA用户下的表结构和数据导入到用户userB下&#xff1a;imp 用户名/密码服务名 fromuser导…

python手机话费_查询话费订单详情示例代码

#!/usr/bin/python# encoding:utf-8import urllib2, json, urllib, hashlib# 3、获取订单详情data {}data["appkey"] "your_appkey_here"data["orderno"] "201605250929585085725"data["outorderno"] "77888855888…

windows 映射文件会释放内存吗_Windows系统共享内存管理

一 进程逻辑空间 物理空间​如上图所示&#xff0c;每个进程都有自己的逻辑空间&#xff0c;这些逻辑空间&#xff0c;会被映射到具体的物理空间中。每个进程的逻辑空间都是彼此隔离&#xff0c;相互独立不受干扰的。但是他们都会被映射到同一个物理空间去&#xff0c;当其所映…

linux 文件的组织,Linux文件组织和目录结构

资料&#xff1a;https://www.shiyanlou.com/courses/running1 Linux目录结构说明可以使用tree来查看目录结构sudo apt-get install tree 安装treetree / 查看根目录的结构将目录定义为四种交互作使用的形态&#xff1a;2 路径. 表示当前目录.. 表示上一级目录 - 表示上一次所在…

python 将列表中的字符串转为数字_python 将列表中的字符串转为数字

本文实例讲述了python中列表元素转为数字的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;有一个数字字符的列表&#xff1a;numbers [1, 5, 10, 8]想要把每个元素转换为数字&#xff1a;numbers [1, 5, 10, 8]用一个循环来解决&#xff1a;new_numbers [];fo…

linux perl 安装目录,linux-将Perl模块安装到特定位置

我有几台运行Perl程序以及其他程序和工具的Linux机器.我想使所有机器之间的所有工具保持同步,因此我已经在一台机器(主)和另一台机器之间共享了/usr/local目录.现在,我想在/usr/local /< modules的路径>中使所有Perl模块及其依赖项保持同步.我已经找到了local::lib模块,但…

python 降维lda算法的使用_sklearn LDA降维算法

sklearn LDA降维算法LDA(Linear Discriminant Analysis)线性判断别分析&#xff0c;可以用于降维和分类。其基本思想是类内散度尽可能小&#xff0c;类间散度尽可能大&#xff0c;是一种经典的监督式降维/分类技术。sklearn代码实现#codingutf-8import pandas as pdimport matp…

linux 命令 语法,linux常用命令及语法

mkdir、rmdirmkdir命令用来建立新的目mkdir命令用来建立新的目录&#xff0c;rmdir用来删除已建立的目录。rm这个命令是用来删除文件的。rm命令常用的参数有三个&#xff1a;-i,-r,-f。删除既有文件或目录之前先询问用户&#xff0c;删除一个名字为test的一个文件&#xff1a;r…

jeecg 导出的excel不能使用公式_微软:Excel公式是世界上使用最广泛的编程语言...

喜欢就关注我们吧&#xff01;文|一君微软近日推出了一项 Excel 公式构建的新功能 LAMBDA&#xff0c;正则测试阶段。LAMBDA 允许使用 Excel 自身的公式语言自定义功能&#xff0c;而过去&#xff0c;Excel 中需要通过 JS 等语言编写自定义函数。同时&#xff0c;LAMBDA 还可以…

linux 查找tomcat目录,linux下通过tomcat访问某路径下的文件

背景&#xff1a;linux服务器上有个日志目录&#xff0c;要通过界面访问。之前用Apache实现的&#xff0c;现在安全漏洞检查需要升级Apache&#xff0c;但是安装之路犹如西天取经&#xff0c;各种缺文件&#xff0c;各种报错&#xff0c;一直没搞定。然后决定用tomcat实现该功能…

python中的画布控制_使按钮在画布上工作(tkinter)

你的代码需要认真的重组。在这里有一些东西可以用来添加矩形。你不需要在cd2>中创建一个cd2>的集合&#xff0c;这样你就不需要在cd2>中创建一个的集合。在from tkinter import *import randomroot Tk()class Recta:def __init__(self, height60, width80):self.heig…

voip 音频采集时间_蓝牙音频续航监测系统展会现场演示

|点击【美格信】关注☝大家好&#xff0c;我是美格信公众号主编&#xff1a;小M&#xff0c;今天的2020(秋季)亚洲蓝牙耳机展上&#xff0c;我们美格信现场展示了发布的新品-MAGNUM麦金纳蓝牙音频续航监测系统。不过有很多小伙伴因为时间问题&#xff0c;没机会来现场参观&…

linux 运行scrapy,python 文件 运行 scrapy

写了一个scrapy&#xff0c;程序可以跑&#xff0c;没有任何问题。爬下30个网站的body存入json文件&#xff0c;并且保存为test.json如果test.json存在就保存到一个新建的test1.json新建了一个python文件叫check.py&#xff0c;对比两个文件的hash值&#xff0c;如果有不一样&a…

linux的硬件系统管理,Linux 系统硬件管理的基础知识(四)

以下主要介绍我的***次安装Linux系统遭遇&#xff0c;以及怎么度过这个遭遇的&#xff0c;希望对大家有所帮助。不喜欢的可以略过。以下接《Linux 系统硬件管理的基础知识(三)》。四、关于存储设备的不同的表示方法的应用&#xff1b;1、/dev/hd[a-z] 表示方法的应用1)用于moun…

大整数减法c语言_3.2 C语言运算符和表达式

01基本的算术运算符1、正号运算符2、-负号运算符3、*乘法运算符4、/除法运算符5、%求余运算符6、加法运算符7、-减法运算符读者应该特别注意和-在不同情况下的含义02自增、自减运算符1、i&#xff0c;--i在使用i之前&#xff0c;先是i的值加&#xff08;减&#xff09;12、i&am…

如何查看linux 是否安装软件包,linux 查看软件包是否安装 linux查看软件包

Linux下怎样检查,如何查看某软件包是否已经安装1、rpm包安装的&#xff0c;可以用rpm -qa看到&#xff0c;如果要查找某软件包是否安装&#xff0c;用 rpm -qa | grep “软件或者包的名字”。rpm -qa | grep ruby2、以deb包安装的&#xff0c;可以用dpkg -l能看到。如果是查找指…

python查看数据大小_科多大数据带你看Python可以列为最值得学习的编程语言

原标题&#xff1a;科多大数据带你看Python可以列为最值得学习的编程语言不知道从什么时候开始&#xff0c;这句话开始流行。不过也从侧面反映出 Python 语言的特点&#xff1a;简单、高效。从近期代表技术趋势的业界报告以及编程语言排行榜来看&#xff0c;觉得编程语言这一块…

trueOS能装linux软件,TrueOS 是什么

TrueOS是一套基于FreeBSD-CURRENT、桌面取向的类Unix操作系统。主要目的是创建一个易于安装软件的图形用户界面&#xff0c;借由提供KDE SC、Lumina、MATE、Xfce等桌面环境使其容易上手。TrueOS 是一套基于 FreeBSD-CURRENT、桌面取向的类 Unix操作系统。主要目的是创建一个易于…