2011-09-14 10 views
0

具体的な質問についてのXPath、パイソン、libxml2domxpath - libxml2domはdomに要素を挿入しますか?

は、TRは、XPath = "//に関連した前にどのように1は、DOMで要素を挿入するのpython/XPathのロジックを作成することができ、次のテストのhtml

を想定しますlibxml2domがこれを達成するための関連する方法があることは知っていますが、これを行う方法についてはdocs/examplesが見つかりません!

感謝..

<html> 
<body> 
<tr> 
<td class="foo"> 
</td> 
</tr> 
<tr> 
<td> 
</td> 
</tr> 
<tr> 
<td class="foo"> 
</td> 
</tr> 
</body> 
</html> 
"div要素は、" TD/TDまわりに追加され

私はこれをたい..

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

ポインタ/コメント..おかげ

答えて

0

はい、libxml2のPythonバインディングのドキュメントは非常にまばらです。私は誰か確信している -

<?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のルート要素があります:とにかく、これはその後、ドキュメントを印刷

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) 

はあなたが与える...私はそれを行うだろうかですそれを取り除く方法を夢見ることができます!

関連する問題