Pythonでlibxml2を使用しています。残念ながら、このライブラリの python バージョンの文書化は非常に不十分であり、そこから Web 上にいくつかの例を見つけただけで、メソッドの一部を理解できました。
すぐに XML ノードを追加できました。この要素は既存の要素を置き換える必要があるため、前の要素を削除したいのですが、子を削除する方法が見つかりませんでした。
メソッド名が何かわかる人いますか?このライブラリに関するまともなドキュメントを持っている人はいますか?
乾杯
Pythonでlibxml2を使用しています。残念ながら、このライブラリの python バージョンの文書化は非常に不十分であり、そこから Web 上にいくつかの例を見つけただけで、メソッドの一部を理解できました。
すぐに XML ノードを追加できました。この要素は既存の要素を置き換える必要があるため、前の要素を削除したいのですが、子を削除する方法が見つかりませんでした。
メソッド名が何かわかる人いますか?このライブラリに関するまともなドキュメントを持っている人はいますか?
乾杯
メソッドを使用しunlinkNode()
て、特定のノードを削除できます。一般に、ノードに適用されるほとんどのメソッドは文書化されています。試してみてください:
pydoc libxml2.xmlNode
の場合unlinkNode
、ドキュメントには次のように記載されています。
unlinkNode(self)
Unlink a node from it's current context, the node is not
freed
たとえば、次の入力があるとします。
<html>
<head>
<title>Document Title</title>
</head>
<body>
<div id="content">This is a test.</div>
</body>
</html>
次のようにファイルを解析できます。
>>> import libxml2
>>> doc = libxml2.parseFile('input.html')
<div>
次のようにノードを見つけます。
>>> node = doc.xpathEval('//*[@id="content"])[0]
そして、次のように削除します。
>>> node.unlinkNode()
そして、ドキュメントを印刷すると、次のようになります。
>>> print doc
<head>
<title>Document Title</title>
</head>
<body>
</body>
</html>
lxml
libXML2のバインディングを使用しているということですか? それらはhttp://lxml.de/でかなりよく IMO に文書化されています。
要素はリストであると述べています。したがって、remove
リスト機能を使用してノードを削除できます。
import lxml
root = lxml.etree.Element("root")
child2 = lxml.etree.SubElement(root, "child2")
child3 = lxml.etree.SubElement(root, "child3")
print lxml.etree.tostring(root)
# "<root><child2/><child3/></root>"
root.remove( child2 )
print lxml.etree.tostring(root)
# "<root><child3/></root>"
完全を期すために、削除したいアイテムが属性unsetProp
である場合は、次の方法を選択します。
...
if node.hasProp('myAttributeName'):
node.usetProp('myAttributeName')
このライブラリに関するまともなドキュメントを持っている人はいますか?
このlibxml2のドキュメントは私を大いに助けてくれました。