Python WordPress XML解析错误:未绑定前缀?
我试图使用Python的xml.etree.ElementTree.parse()函数来解析我从WordPress博客导出所有内容而创建的xml文件。然而,当我这样尝试时:Python WordPress XML解析错误:未绑定前缀?,python,wordpress,xml-parsing,Python,Wordpress,Xml Parsing,我试图使用Python的xml.etree.ElementTree.parse()函数来解析我从WordPress博客导出所有内容而创建的xml文件。然而,当我这样尝试时: import xml.etree.ElementTree as xml tree = xml.parse('/path/to/file.xml') 我得到以下错误: File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etr
import xml.etree.ElementTree as xml
tree = xml.parse('/path/to/file.xml')
我得到以下错误:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1183, in parse
tree.parse(source, parser)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 656, in parse
parser.feed(data)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1643, in feed
self._raiseerror(v)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1507, in _raiseerror
raise err
ParseError: unbound prefix: line 189, column 1
下面是我的XML文件第189行的内容:
<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blogname.wordpress.com/osd.xml" title="blog name" />
我在Android开发中看到了很多关于这个错误的问题,但我不知道这是否适用于我的情况,以及如何适用于我的情况。有人能帮上忙吗?向所有人道歉,对于他们来说,这是非常明显的,但事实证明,我在文档中根本没有“atom”的名称空间定义。我猜“unboundprefix”意味着前缀“atom”没有“绑定”到名称空间定义
无论如何,添加上述定义解决了问题。尽管我想知道为什么WordPress在导出XML文件时没有为它们使用的所有名称空间提供正确的定义…如果删除所有名称空间,效果绝对不错 改变
<s:home>USA</s:home>
美国
到
美国
为了以防万一,有一天我还在用Python处理WordPress XML导出(WordPress eXtended RSS)文件,遇到了同样的错误。在我的例子中,WordPress包含了大多数正确的命名空间定义。但是,XML也包含iTunes播客信息,并且iTunes名称空间声明不存在
我通过添加xmlns:itunes=”修复了它http://www.itunes.com/dtds/podcast-1.0.dtd“
进入RSS声明块。因此:
<!-- generator="WordPress/4.9.8" created="2018-08-06 03:12" -->
<rss version="2.0"
xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.2/"
>
变成这样:
<!-- generator="WordPress/4.9.8" created="2018-08-06 03:12" -->
<rss version="2.0"
xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.2/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>
恭喜你自己解决了这个问题。
<!-- generator="WordPress/4.9.8" created="2018-08-06 03:12" -->
<rss version="2.0"
xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:wp="http://wordpress.org/export/1.2/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>