Python lxml(或lxml.html):打印树结构
我想以一种可区分的方式打印一个etree(由html文档形成)的树结构(意味着两个etree应该以不同的方式打印) 我所说的结构是树的“形状”,基本上是指所有的标记,但没有属性和文本内容 有什么想法吗?lxml中有什么东西可以做到这一点吗 如果没有,我想我必须遍历整个树,并从中构造一个字符串。你知道如何用简洁的方式表示这棵树吗?(紧凑型功能不太相关) 仅供参考,它不是用来查看的,而是用来存储和散列的,以便能够在几个html模板之间进行区分Python lxml(或lxml.html):打印树结构,python,html,xml,lxml,Python,Html,Xml,Lxml,我想以一种可区分的方式打印一个etree(由html文档形成)的树结构(意味着两个etree应该以不同的方式打印) 我所说的结构是树的“形状”,基本上是指所有的标记,但没有属性和文本内容 有什么想法吗?lxml中有什么东西可以做到这一点吗 如果没有,我想我必须遍历整个树,并从中构造一个字符串。你知道如何用简洁的方式表示这棵树吗?(紧凑型功能不太相关) 仅供参考,它不是用来查看的,而是用来存储和散列的,以便能够在几个html模板之间进行区分 谢谢也许只需在源XML上运行一些XSLT,除去标记以外的
谢谢也许只需在源XML上运行一些XSLT,除去标记以外的所有内容,然后使用
etree.tostring
就可以很容易地得到一个可以散列的字符串
从lxml导入etree作为ET
def pp(e):
print ET.tostring(e,pretty_print=True)
打印
root=ET.XML(“”)\
穆奥
0
""")
pp(根)
xslt=ET.XML(“”)\
""")
tr=ET.XSLT(XSLT)
doc2=tr(根)
root2=doc2.getroot()
pp(root2)
为您提供以下输出:
穆奥
0
是否有.tostring()
方法没有为您做的事情?是的,如果不清楚的话,很抱歉:我所说的树结构基本上只是标记,没有文本,也没有属性(有疑问添加)我认为LXML没有内置此功能,因此,你必须循序渐进。确切地说,我对XSLT知之甚少,而且它似乎是做我想做的事情的正确和标准的方法。如果你养成了这样的习惯,那么它对任何你从大量结构开始并希望将其变为更易于管理的东西都非常有用。请记住,默认规则与此样式表相同,因此它只复制元素和属性,而不复制其他内容。这里有非常好的教程,甚至还有更好的XML参考资料: