使用 objectify 获取具有不同名称空间前缀的项目

发布于 2024-10-18 06:35:23 字数 406 浏览 7 评论 0原文

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
    <content type="html">Hello World!</content>
    <dd:country_code>USA</dd:country_code>
</entry>

我想使用 lxml.objectify 来访问“Hello World!”和“美国”。怎么办呢?我不关心效率,只关心节俭。我已经尝试了我能想到的一切,但没有成功。

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
    <content type="html">Hello World!</content>
    <dd:country_code>USA</dd:country_code>
</entry>

I would like to use lxml.objectify to access both 'Hello World!' and 'USA'. How can it be done? I am not concerned with efficiency, just parsimony. I've tried everything I can think of to no avail.

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

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

发布评论

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

评论(1

情绪操控生活 2024-10-25 06:35:23

通过此设置:

import lxml.objectify as objectify
import io

content='''\
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
    <content type="html">Hello World!</content>
    <dd:country_code>USA</dd:country_code>
</entry>
</feed>'''

doc=objectify.parse(io.BytesIO(content))
tree=doc.getroot()

简短而快速的方法:

print(list(tree.entry.iterchildren()))
# ['Hello World!', 'USA']

或者更具体的方法:

print(tree.entry["content"])
# Hello World!

处理命名空间:

print(tree.entry["{http://example.com/ns/1.0}country_code"])
# USA

这种访问命名空间的方法是 记录在此处

With this setup:

import lxml.objectify as objectify
import io

content='''\
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
    <content type="html">Hello World!</content>
    <dd:country_code>USA</dd:country_code>
</entry>
</feed>'''

doc=objectify.parse(io.BytesIO(content))
tree=doc.getroot()

The short and quick way:

print(list(tree.entry.iterchildren()))
# ['Hello World!', 'USA']

Or the more specific way:

print(tree.entry["content"])
# Hello World!

to handle namespaces:

print(tree.entry["{http://example.com/ns/1.0}country_code"])
# USA

This method of accessing namespaces is documented here.

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