Python xpath-libxml2dom插入元素到dom?

Python xpath-libxml2dom插入元素到dom?,python,xpath,libxml2,Python,Xpath,Libxml2,关于xpath、python、libxml2dom的一个特定问题 假设以下测试为html 如何创建python/xpath逻辑以在与xpath=“//tr/td[@class='foo']”关联的tr之前在dom中插入元素 我知道libxml2dom有一些相关的方法可以实现这一点。。但我找不到关于如何做到这一点的文档/示例 谢谢 <html> <body> <tr> <td class="foo"> </td> </tr>

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

假设以下测试为html

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

我知道libxml2dom有一些相关的方法可以实现这一点。。但我找不到关于如何做到这一点的文档/示例

谢谢

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

我想要这个。。其中,td/td周围添加了一个“div”

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


指针/注释。。谢谢

是的,关于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)
导入libxml2
html=“”
doc=libxml2.parseDoc(html)
对于[xeval.parent for xeval in doc.xpathEval('//tr/td[@class=“foo”]”)中的元素:
#创建一个新的div元素
newdiv=libxml2.newNode('div')
#复制当前节点
node_copy=elem.copyNode(1)
#将当前节点副本附加到新的div元素
newdiv.addChild(节点\副本)
#用新的div替换当前节点
元素替换节点(newdiv)
然后,打印文档将为您提供:

<?xml version="1.0"?>
<html><body><div><tr><td class="foo"/></tr></div><tr><td/></tr><div><tr><td class="foo"/></tr></div></body></html>

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