xml实例:

版本一:

  1. <?xml version="1.0" encoding="UTF-8"?><country name="chain"><provinces><heilongjiang name="citys"><haerbin/><daqing/></heilongjiang><guangdong name="citys"><guangzhou/><shenzhen/><huhai/></guangdong><taiwan name="citys"><taibei/><gaoxiong/></taiwan><xinjiang name="citys"><wulumuqi waith="tianqi"></wulumuqi></xinjiang></provinces></country>

没有空格,换行,的版本

python操作操作实例:

  1. from lxml import etree
  2. class r_xpath_xml(object):
  3. def __init__(self):
  4. self.xmetrpa=etree.parse('info.xml') #读取xml数据
  5. pass
  6. def xpxm(self):
  7. xpxlm=self.xmetrpa
  8. print etree.tostring(xpxlm) #打印xml数据
  9. root=xpxlm.getroot() #获得该树的树根
  10. print root.tag,' ', #打印根标签名
  11. print root.items() #获得标签属性名称和属性值
  12. for a in root: ##遍历根下一集级标签
  13. print a.tag,a.items(),a.text,' 被打印的类型为: ',type(a) #打印标签名称,标签属性,标签数据
  14. for b in a:
  15. print b.tag,b.items(),b.text#,b
  16. for c in b:
  17. print c.tag,c.items(),c.text#,c
  18. for d in c:
  19. print d.tag,d.items(),d.test,d
  20. print xpxlm.xpath('//node()')#.items()#.tag
  21. print '====================================================================================================='
  22. xa=xpxlm.xpath('//heilongjiang/*')
  23. print xa
  24. for xb in xa:
  25. print xb.tag,xb.items(),xb.text
  26. xc=xpxlm.xpath('//xinjiang/*')
  27. print xc
  28. for xd in xc:
  29. print xd.tag,xd.items(),xd.text
  30. if __name__ == '__main__':
  31. xpx=r_xpath_xml()
  32. xpx.xpxm()
  1. 应用for循环遍历标签层次结构,tag获取标签名,items()通过字典函数获取[('属性名' , '属性值')],text获取标签对之间的数据。tagitems(),text针对的类型为:<type 'lxml.etree._Element'>
    打印结果:
  1. <country name="chain"><provinces><heilongjiang name="citys"><haerbin/><daqing/></heilongjiang><guangdong name="citys"><guangzhou/><shenzhen/><huhai/></guangdong><taiwan name="citys"><taibei/><gaoxiong/></taiwan><xinjiang name="citys"><wulumuqi waith="tianqi"></wulumuqi></xinjiang></provinces></country>
  2. country [('name', 'chain')]
  3. provinces [] None 被打印的类型为: <type 'lxml.etree._Element'>
  4. heilongjiang [('name', 'citys')] None
  5. haerbin [] None
  6. daqing [] None
  7. guangdong [('name', 'citys')] None
  8. guangzhou [] None
  9. shenzhen [] None
  10. huhai [] None
  11. taiwan [('name', 'citys')] None
  12. taibei [] None
  13. gaoxiong [] None
  14. xinjiang [('name', 'citys')] None
  15. wulumuqi [('waith', 'tianqi')] 晴
  16. [<Element country at 0x2d47b20>, <Element provinces at 0x2d47990>, <Element heilongjiang at 0x2d479b8>, <Element haerbin at 0x2d47558>, <Element daqing at 0x2d47328>, <Element guangdong at 0x2d47300>, <Element guangzhou at 0x2d476e8>, <Element shenzhen at 0x2d47530>, <Element huhai at 0x2d472d8>, <Element taiwan at 0x2d47260>, <Element taibei at 0x2d47238>, <Element gaoxiong at 0x2d47080>, <Element xinjiang at 0x2d47710>, <Element wulumuqi at 0x2d47968>, u'\u6674']
  17. =====================================================================================================
  18. [<Element haerbin at 0x2d479b8>, <Element daqing at 0x2d47148>]
  19. haerbin [] None
  20. daqing [] None
  21. [<Element wulumuqi at 0x2d47968>] 类型为: <type 'list'>
  22. wulumuqi [('waith', 'tianqi')] 晴

xml实例:

版本二:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <country name="chain">
  3. <provinces>
  4. <city:table xmlns:city="http://www.w3school.com.cn/furniture">
  5. <heilongjiang name="citys"><city:haerbin/><city:daqing/></heilongjiang>
  6. <guangdong name="citys"><city:guangzhou/><city:shenzhen/><city:zhuhai/></guangdong>
  7. <taiwan name="citys"><city:taibei/><city:gaoxiong/></taiwan>
  8. <xinjiang name="citys"><city:wulumuqi></city:wulumuqi></xinjiang>
  9. </city:table>
  10. </provinces>
  11. </country>
  1. 实例:
  1. print xpxlm.xpath('//node()')
  1. 打印结果:
    空格回车字符,命名空间。
  1. [<Element country at 0x2e79b20>, '\n    ', <Element provinces at 0x2e79990>, '\n        ', <Element {http://www.w3school.com.cn/furniture}table at 0x2e79710>, '\n        ', <Element heilongjiang at 0x2e799b8>, <Element {http://www.w3school.com.cn/furniture}haerbin at 0x2e79328>, <Element {http://www.w3school.com.cn/furniture}daqing at 0x2e79968>, '\n        ', <Element guangdong at 0x2e79530>, <Element {http://www.w3school.com.cn/furniture}guangzhou at 0x2e79300>, <Element {http://www.w3school.com.cn/furniture}shenzhen at 0x2e792d8>, <Element {http://www.w3school.com.cn/furniture}zhuhai at 0x2e79260>, '\n        ', <Element taiwan at 0x2e79238>, <Element {http://www.w3school.com.cn/furniture}taibei at 0x2e79080>, <Element {http://www.w3school.com.cn/furniture}gaoxiong at 0x2e79058>, '\n        ', <Element xinjiang at 0x2e796e8>, <Element {http://www.w3school.com.cn/furniture}wulumuqi at 0x2e79558>, u'\u6674', '\n        ', '    \n    ', '\n']

去掉空格:

  1. xp=xpxlm.xpath('//node()')
  2. print xp, #.items()#.tag
  3. for i in xp:
  4. if '' in i or '\n' in i:
  5. continue
  6. else:
  7. print i.tag

通过判断去除空格换行符号

输出结果:

  1. provinces
  2. {city}table
  3. heilongjiang
  4. {city}haerbin
  5. {city}daqing
  6. guangdong
  7. {city}guangzhou
  8. {city}shenzhen
  9. {city}zhuhai
  10. taiwan
  11. {city}taibei
  12. {city}gaoxiong
  13. xinjiang
  14. {city}wulumuqi
  1.  

Python通过lxml库遍历xml通过xpath查询(标签,属性名称,属性值,标签对属性)的更多相关文章

  1. python通过LXML库读取xml命名空间

    xml实例版本: <a> <city:table xmlns:city="city"> <heilongjiang name="citys& ...

  2. js遍历对象所有的属性名称和值

    /* * 用来遍历指定对象所有的属性名称和值 * obj 需要遍历的对象 * author: Jet Mah * website: http://www.javatang.com/archives/2 ...

  3. 遍历JavaScript某个对象所有的属性名称和值

    /* * 用来遍历指定对象所有的属性名称和值 * obj 需要遍历的对象 */ function allPrpos(obj) { // 用来保存所有的属性名称和值 var props = " ...

  4. python lxml库生成xml文件-节点命名空间问题

    lxml库,处理xml很强大,官方文档:https://lxml.de/tutorial.html#namespaces 例如: 我们要生成如下格式的报文: <ttt:jesson xmlns: ...

  5. C#使用Linq to XML进行XPath查询

    最近在用到HtmlAgliltyPack进行结点查询时,发现这里选择结点使用的是XPath.所以这里总结一下在C#中使用XPath查询XML的方法.习惯了用Linq,这里也是用的Linq to xml ...

  6. 【xml】python的lxml库使用

    1.官方教程:http://lxml.de/tutorial.html#parsing-from-strings-and-files  最重要的文档,看完基本就能用了 2.lxml支持xpath,xp ...

  7. Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库

    最近所写的代码中需要用到python去连接MySql数据库,因为是用PyQt5来构建的GUI,原本打算使用PyQt5中的数据库连接方法,后来虽然能够正确连接上发现还是不能提交修改内容,最后在qq交流群 ...

  8. Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性

    本文整体思路:在Python中使用Geopandas库,依次读取shp文件的每一个面状要素,获取其空间边界信息并裁剪对应的栅格影像,计算所裁剪影像Value值的众数,将其设置为对应面状要素的NewTY ...

  9. Python 爬虫 解析库的使用 --- XPath

    一.使用XPath XPath ,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言.它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索. 所 ...

随机推荐

  1. 最新 物易云通java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.物易云通等10家互联网公司的校招Offer,因为某些自身原因最终选择了物易云通.6.7月主要是做系统复习.项目复盘.Leet ...

  2. java内置的四大函数式接口

    一.Consumer:消费型接口(void accept(T t)) 举一个例子 public class LambdaTest { @Test public void test() { happyT ...

  3. [转帖]Linux中的find(-atime、-ctime、-mtime)指令分析

    Linux中的find(-atime.-ctime.-mtime)指令分析 https://www.cnblogs.com/zhangjinjin01/p/5505970.html https://w ...

  4. Django-01-Web框架简介

    1. 什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有 ...

  5. Goroutines和线程对比

    目录 栈不同 调度不同 GOMAXPROCS Goroutine没有ID号 栈不同 线程:每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用 ...

  6. 全栈项目|小书架|服务器开发-Koa2 参数校验处理

    为什么需要做参数校验 在开发中,无论是App开发还是服务器接口开发, 我们无法去预测用户传入的数据,因此参数(数据)校验是开发中不可或缺的一环. 例如像App的注册登录表单提交页面,就要做好多层的判断 ...

  7. 14-3 SQL Server基本操作

    SQL Server安装默认新建四个系统数据库 1.master数据库 Master数据库时SQL Server中最重要的数据库.它记录SQL Server实例的所有系统级信息,包括实例范围的元数据. ...

  8. 导出Excel的2个方法

    导出到Excel的两种方法 第一种: 1.首先创建Excle模板,另存为 “xml”文件.使用记事本等编辑软件打开文件的代码.然后另存为视图文件“Export.cshtml”; 2.控制器操作 pub ...

  9. glfw内存泄露测试

    1. glfwInit()   和  glfwTerminate()  放在主线程  循环次数 1    内存   14M 循环次数100    46M 循环次数1000   49M 2.  glfw ...

  10. 分享个免费的svn平台

    平时在工作中难免会用到svn,但是要自己搭建一个,未免成本太高,近来,本人接触到一个免费的svn平台(可能大神们早就发现了),个人使用还是足够了. 地址:https://svnbucket.com 相 ...