在Python中编辑libxml2特定节点
我在做一个网页应用,使用的是Python和libxml2库。
我需要在一个特定的XML结构中,给某个文章的节点添加一个子节点,结构大概是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<archive>
<article>text<span>tag</span></article>
<article>text2<span>tag2</span></article>
<article>text3<span>tag3</span></article>
</archive>
最后的结果应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<archive>
<article>text<span>tag</span></article>
<article>text2<span>tag2</span><counter count='1'/></article>
<article>text3<span>tag3</span></article>
</archive>
抱歉我的英语不好。
补充说明:网页客户端会告诉我什么时候需要添加这个计数节点。
我现在的问题是,我找不到选择需要修改的节点的方法。
我可以在XML文档的根元素下添加子节点,但我还没有找到在根元素以外的其他元素下添加子节点的方法。
1 个回答
3
如果你能把XPath的结果缩小到一个单独的节点,那么这段代码就能正常工作:
#!/usr/bin/env python
import libxml2
doc = libxml2.parseFile("foo.xml")
nodes=doc.xpathEval('/archive/article[2]')
newElement = nodes[0].newChild(None, 'counter', None)
newElement.newProp('count', '1')
print nodes[0].serialize()
doc.freeDoc()