热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用python解析和打印XML-ParsingandprintingXMLwithpython

ImprettynewtoXMLandIwaswonderinghowwouldIparse,sort,andprintval1toval4inpython?

I'm pretty new to XML and I was wondering how would I parse, sort, and print val1 to val4 in python? With my research I found xml.dom or xml.etree was used a lot but I'm having trouble finding the correct functions to use to parse the through the XML tree and print out what I need.

我对XML很新,我想知道如何在python中解析,排序和打印val1到val4?通过我的研究,我发现xml.dom或xml.etree被大量使用,但我无法找到正确的函数来解析XML树并打印出我需要的东西。


  
    
      
         val1 
         val2 
         val3 
         val4 
      
    
  

4 个解决方案

#1


2  

I recently made a small python program to display some information from some XML files. I found that using BeautifulSoup 4 made XML extremely easy to parse. You can either download the source from the linked website and install it yourself, or follow the documentation to install the package bs4 using pip or easy_install.

我最近做了一个小python程序来显示一些XML文件中的一些信息。我发现使用BeautifulSoup 4使得XML非常容易解析。您可以从链接的网站下载源代码并自行安装,也可以按照文档使用pip或easy_install安装软件包bs4。

Using BS4:

使用BS4:

soup = BeautifulSoup(xmlFileORString);
for item in soup.a.b.c.d.find_all('item'):
    print(item.string)

EDIT: BS4 can also be compiled for Python 2.7 and the code is almost the exact same.

编辑:BS4也可以编译为Python 2.7,代码几乎完全相同。

#2


3  

I can recommend the lxml lib:

我可以推荐lxml lib:

from lxml import etree
xml = etree.XML(...)
for e in xml.xpath('//item'):
    print e.text

Here I have used xpath to find all "item"-tags.

在这里,我使用xpath查找所有“item”-tags。

You can also write:

你也可以这样写:

for e in xml.xpath('/a/b/c/d/item'):
    print e.text

If it is important to only find "item"s in the specified path.

如果仅在指定路径中找到“item”很重要。

#3


1  

You should find a good deal of information about XML. It's a very popular standard. You should familiarize yourself with the Document Object Model (DOM) Level 1 first. Most libraries build on that.

您应该找到有关XML的大量信息。这是一个非常受欢迎的标准。您应该首先熟悉文档对象模型(DOM)级别1。大多数图书馆都是基于此。

There are a few very popular python libraries available. Which one you chose depends on your personal needs.

有一些非常流行的python库可用。您选择哪一个取决于您的个人需求。

lxml -- Pretty much the de-facto standard when it comes to XML processing with Python. But quite frankly, the documentation sucks. But with a bit of time and effort, you'll get there.

lxml - 在使用Python进行XML处理时,几乎是事实上的标准。但坦率地说,文档很糟糕。但是经过一些时间和精力,你会到达那里。

beautifulsoup -- The main aim of BS is not XML processing. It's main aim is to deal with input which might be messy (think screen-scraping). It has a very sexy API though, and might be enough for you.

beautifulsoup - BS的主要目标不是XML处理。它的主要目的是处理可能混乱的输入(想想屏幕抓取)。虽然它有一个非常性感的API,但对你来说可能已经足够了。

minidom -- Included in the standard library, which in my opinion is a big plus. It offers you a simple way to load/write XML documents and exposes the aforementioned DOM level 1 spec. Nothing more, nothing less. For most small/simple projects this is more than enough. If however you need more advanced XML features like XPATH, XIincludes or XSL, or simply speed, look into lxml!

minidom - 包含在标准库中,在我看来是一个很大的优点。它为您提供了一种加载/编写XML文档的简单方法,并公开了上述DOM 1级规范。没有更多,没有更少。对于大多数小型/简单项目来说,这已经足够了。但是,如果您需要更高级的XML功能,如XPATH,XIincludes或XSL,或者只是速度,请查看lxml!

Hope this get's you started. Good Luck!

希望这是你的开始。祝你好运!

#4


1  

Use lxml package in python, because lxml supports to xpath which is very helpful for firing query on xml file. And it is fast to process large data from XML file

在python中使用lxml包,因为lxml支持xpath,这对于在xml文件上触发查询非常有用。从XML文件处理大数据的速度很快

from lxml import etree
tree = etree.parse(XML_FILE_PATH)
root = self.tree.getroot()

To get text from node of xml :

从xml的节点获取文本:

nodes =  tree.findall("//item")
text = [node.text for node in nodes]

You will get list i.e [1,2,3,4] , after that you can sort result list using sorted(text)

您将获得列表,即[1,2,3,4],之后您可以使用排序(文本)对结果列表进行排序

And for getting elements attributes, you can use -:

要获取元素属性,您可以使用 - :

Suppose, 1

假设, 1

entries = tree.xpath("//item[@id='2']")

You will get all attributes i.e {'id':2, 'name':'abc'} in entries

您将在条目中获得所有属性,即{'id':2,'name':'abc'}


推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
author-avatar
墮天使love蘇蘇_709
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有