2011-11-21 75 views
2

我使用pyx和libxml2作爲web應用程序。 我需要的文章之一的XML子節點添加到XML這種結構:python中的libxml2編輯特定節點

<?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文檔添加一個孩子的根元素,我還沒有找到一種方法來做到這一點在根元素以外的元素

+0

1.什麼是添加計數器的規則2.你有什麼試過? –

+0

我需要添加一個計數器,當我recive從客戶請求(客戶指定女巫職位,我需要修改),並沒有櫃檯(如果有我需要提高櫃檯)。我無法找到libxml2和python的良好文檔(我試過xpath,但是它返回了一個元素列表而不是指向xml的指針) – kurojishi

+1

嘗試使用LXML,http://lxml.de –

回答

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()