python 编辑特定节点的 libxml2

发布于 2024-12-17 06:40:20 字数 870 浏览 0 评论 0原文

我将 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>

抱歉英语编辑不好

:web 客户端将指定 ai 何时需要添加计数器节点。 我的问题是我找不到选择需要修改的节点的方法。 我可以修改 xml 文档,在根元素中添加子元素,但我还没有找到在根元素以外的元素中执行此操作的方法

I use python with libxml2 for a webapplication.
I need to add an xml node child of one of the articles to an xml with this structure:

<?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>

The result must be something like this:

 <?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>

Sorry for the bad english

edit: the webclient will specify when a i need to add the counter node.
my problem is that i can't found the way to select the node i need to modify.
i can modify an xml document adding a child the root element i haven't found a way to do that in elements other than the root element

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

禾厶谷欠 2024-12-24 06:40:20

如果您可以将 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()

If you can narrow down the XPath results to a single node then this code will work:

#!/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()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文