首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lxml (或lxml.html):打印树结构

lxml (或lxml.html):打印树结构
EN

Stack Overflow用户
提问于 2012-10-27 03:20:38
回答 1查看 12.1K关注 0票数 14

我想以一种可区分的方式打印出etree的树形结构(由html文档组成)(意味着两个etree应该以不同的方式打印出来)。

我所说的结构是指树的“形状”,这基本上是指所有的标签,但没有属性和文本内容。

有什么想法吗?在lxml中有什么东西可以做到这一点吗?

如果不是,我想我必须遍历整个树并构造一个字符串。你知道如何以一种紧凑的方式表示树吗?(“紧凑”特性不太重要)

仅供参考,它不是用来查看的,而是用来存储和散列的,以便能够在几个html模板之间产生差异。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 15:35:33

也许只需在源XML上运行一些XSLT来剥离除标记之外的所有内容,然后就可以很容易地使用etree.tostring获得一个可以散列的字符串……

代码语言:javascript
复制
from lxml import etree as ET

def pp(e):
    print ET.tostring(e, pretty_print=True)
    print

root = ET.XML("""\
<project id="8dce5d94-4273-47ef-8d1b-0c7882f91caa" kpf_version="4">
<livefolder id="8744bc67-1b9e-443d-ba9f-96e1d0007ba8" idref="707cd68a-33b5-4051-9e40-8ba686c2fdb8">Mooo</livefolder>
<livefolder id="8744bc67-1b9e-443d-ba9f" idref="707cd68a-33b5-4051-9e40-8ba686c2fdb8" />
<preference-set idref="8dce5d94-4273-47ef-8d1b-0c7882f91caa">
  <boolean id="import_live">0</boolean>
</preference-set>
</project>
""")
pp(root)


xslt = ET.XML("""\
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates select="*"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
""")
tr = ET.XSLT(xslt)

doc2 = tr(root)
root2 = doc2.getroot()
pp(root2)

给出以下输出:

代码语言:javascript
复制
<project id="8dce5d94-4273-47ef-8d1b-0c7882f91caa" kpf_version="4">
  <livefolder id="8744bc67-1b9e-443d-ba9f-96e1d0007ba8" idref="707cd68a-33b5-4051-9e40-8ba686c2fdb8">Mooo</livefolder>
  <livefolder id="8744bc67-1b9e-443d-ba9f" idref="707cd68a-33b5-4051-9e40-8ba686c2fdb8"/>
  <preference-set idref="8dce5d94-4273-47ef-8d1b-0c7882f91caa">
    <boolean id="import_live">0</boolean>
  </preference-set>
</project>

<project>
  <livefolder/>
  <livefolder/>
  <preference-set>
    <boolean/>
  </preference-set>
</project>
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13093091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档