【问题标题】:lxml: How to make new Element tree from given element in a treelxml:如何从树中的给定元素创建新元素树
【发布时间】:2011-03-11 17:57:28
【问题描述】:

我正在使用lxml 来解析 xml 数据。我必须在各个节点上划分 xml,并将每个子树中的数据写入单独的文件。 lxml 在 _ElementTree 类中提供了 write() 方法,可以方便地将解析树表示的 xml 写入文件。

因此,如果我可以通过给定节点的子树的根节点创建树(_ElementTree 对象),那么我可以轻松使用 write() 方法。如何做到这一点。

【问题讨论】:

    标签: python lxml


    【解决方案1】:

    抱歉打扰了,我找到了答案。它的:

    new_tree = etree.ElementTree(node_in_tree)
    

    【讨论】:

      【解决方案2】:

      您无需创建新的 ElementTree 即可将元素及其内容写入文件,只需将 etree.tostring(element) 的结果写入即可,例如:

      from lxml import etree
      
      with open("whatever.xml") as fp:
          tree = etree.parse(fp)
          i = 0
          for node in tree.xpath('//section'):
              output_filename = "output-%d.xml" % (i,)
              with open(output_filename,"w") as fp:
                  fp.write(etree.tostring(node))
              i += 1
      

      【讨论】:

      • 您的解决方案很优雅。谢谢:)
      • 不应该是etree.parse(fb, parser)吗?否则解析器变量已过时
      • @kravietz:谢谢 - 事实上,parser 不是 XML 解析所必需的,所以我已经删除了它,并检查了该示例是否仍然有效
      猜你喜欢
      • 2012-02-08
      • 2014-01-22
      • 1970-01-01
      • 2023-03-18
      • 2020-05-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多