libxml2在python中编辑特定节点

时间:2011-11-21 15:16:02

标签: python xml libxml2

我将python与libxml2一起用于web应用程序。 我需要将其中一篇文章的xml节点子项添加到具有以下结构的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>

抱歉英文不好

编辑:webclient将指定何时需要添加计数器节点。 我的问题是我找不到选择我需要修改的节点的方法。 我可以修改一个xml文档,添加一个子元素我没有找到一种方法在根元素以外的元素中做到这一点

1 个答案:

答案 0 :(得分: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()