我尝试解析一些原子进给。 E.g。
>>> feedparser.parse("""
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:a="http://example.com">
<entry>
<a:name>123</a:name>
<a:name xml:lang="es"></a:name>
</entry>
</feed>
""").entries[0]
{u'a_name': {'xml:lang': u'es'}}
我希望收到这样的内容:
{u'a_name': '123'}
或
{u'a_name': ['123', '']}
好奇的是,如果您将name
更改为title
- feedparser工作正常。
但是我需要来自其他命名空间的解析自定义标记。
答案 0 :(得分:1)
来自rfc4287:
o atom:entry元素必须只包含一个atom:title元素。
没有提及name
元素作为entry
的子元素。
第6.3节说
当作为孩子遇到未知的外国标记时 atom:entry,atom:feed或Person构造,Atom Processors MAY 绕过标记和任何文本内容,绝不能改变它们 由于标记的存在而导致的行为。
FeedParser是一种通用解析器,可与许多不同类型的Feed一起使用,因此,可能不支持各种细微内容或更高级的使用。特别是,它不支持此功能(快速浏览源代码似乎可以验证这一点)。
换句话说,您需要修改FeedParser,找到其他ATOM解析器(我不知道任何),或者自己写一些东西......