xpath libxml2dom在dom中插入元素?

2024-09-28 21:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

关于xpath、python、libxml2dom的特定问题

假设下面的测试html

如何创建python/xpath逻辑,在与xpath=“//tr/td[@class='foo']”关联的tr之前插入元素

我知道libxml2dom有一些相关的方法来完成这个。。但我找不到关于如何做到这一点的文档/示例!在

谢谢。。在

<html>
<body>
<tr>
<td class="foo">
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td class="foo">
</td>
</tr>
</body>
</html>

我想要这个。。其中在td/td周围加上“div”。。在

^{pr2}$

指针/注释。。谢谢


Tags: 方法文档div元素示例foohtmlbody
1条回答
网友
1楼 · 发布于 2024-09-28 21:47:54

是的,libxml2的Python绑定的文档非常稀少。不管怎样,这就是我要做的。。。在

import libxml2
html = '<html><body><tr><td class="foo"></td></tr><tr><td></td></tr><tr><td class="foo"></td></tr></body></html>'
doc = libxml2.parseDoc(html)
for elem in [xeval.parent for xeval in doc.xpathEval('//tr/td[@class="foo"]')]:
    # Create a new div element
    newdiv = libxml2.newNode('div')
    # Copy current node
    node_copy = elem.copyNode(1)
    # Append current node copy to new div element
    newdiv.addChild(node_copy)
    # Replace current node with new div
    elem.replaceNode(newdiv)

打印doc则可以:

^{pr2}$

我知道,这里有一个XML根元素-我相信有人可以想出一种方法来摆脱它!在

相关问题 更多 >