libxml2 в редакторе Python определенного узла - PullRequest
2 голосов
/ 21 ноября 2011

Я использую python с libxml2 для веб-приложения. Мне нужно добавить дочерний узел 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>

Извините за плохой английский

edit: веб-клиент будет указывать, когда мне нужно добавить узел счетчика. Моя проблема в том, что я не могу найти способ выбрать узел, который мне нужно изменить. я могу изменить документ XML, добавив дочерний элемент root. Я не нашел способа сделать это в элементах, отличных от корневого элемента

1 Ответ

3 голосов
/ 14 декабря 2011

Если вы можете сузить результаты 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()
...