提取使用Python XML文件中的元素(Extract elements from XML fil

2019-07-29 07:00发布

下面的链接使我们在recipelist配料表。 我想提取成分的名称和使用Python将其保存到另一个文件。 http://stream.massey.ac.nz/file.php/6087/Eva_Material/Tutorials/recipebook.xml

到目前为止,我已经使用下面的代码尝试,但它给了我完整的配方不是配料的名称:

from xml.sax.handler import ContentHandler
import xml.sax
import sys
def recipeBook(): 
    path = "C:\Users\user\Desktop"
    basename = "recipebook.xml"
    filename = path+"\\"+basename
    file=open(filename,"rt")
    # find contents 
    contents = file.read()

    class textHandler(ContentHandler):
      def characters(self, ch):
      sys.stdout.write(ch.encode("Latin-1"))
    parser = xml.sax.make_parser()
    handler = textHandler( )
    parser.setContentHandler(handler)
    parser.parse("C:\Users\user\Desktop\\recipebook.xml")



  file.close()

我如何提取每种成分的名称,并将其保存到另一个文件?

Answer 1:

@Neha

我猜你现在解决您的要求,这里是我放在一起使用教程,在一小片http://lxml.de/tutorial.html 。 该XML文件保存在“rough_data.xml”

import xml.etree.cElementTree as etree

xmlDoc = open('rough_data.xml', 'r')
xmlDocData = xmlDoc.read()
xmlDocTree = etree.XML(xmlDocData)

for ingredient in xmlDocTree.iter('ingredient'):
    print ingredient[0].text

所有经历过的Python程序员读这篇文章,敬请提高这个“新手”的代码。

注:LXML包装看起来非常好,它绝对值得使用。 谢谢



Answer 2:

请将相关的XML文本,以获得正确的答案。 也请考虑使用LXML为任何特定的XML(包括HTML)。

试试这个 :

from lxml import etree

tree=etree.parse("your xml here")
all_recipes=tree.xpath('./recipebook/recipe')
recipe_names=[x.xpath('recipe_name/text()') for x in all_recipes]
ingredients=[x.getparent().xpath('../ingredient_list/ingredients') for x in recipe_names]
ingredient_names=[x.xpath('ingredient_name/text()') for x in ingredients]

这仅仅是起步,但我认为你从这里得到的想法 - >获取每个ingredient_name并从那里等成分/数量父。 你真的不能做任何其他的搜索,我认为由于文档的结构化特性。

你可以阅读更多[www.lxml.de]



Answer 3:

前一段时间我做了一系列解释如何收集来自网站的数据截屏。 该代码是在Python和有关于XML 2个视频与LXML库解析。 所有的视频张贴在这里: http://railean.net/index.php/2012/01/27/fortune-cowsay-python-video-tutorial

你想要的是:

  • XPath的实验和查询示例
  • Python和LXML,与Python XPath查询的例子
  • 通过HTTP和HTML与LXML解析自动检索页

您将学习如何编写和测试XPath查询,以及如何在Python运行这些查询。 例子很简单,我希望你会发现他们有帮助。



文章来源: Extract elements from XML file using Python