WordPress XML ParseError:未绑定的前缀?

时间:2012-09-10 10:08:41

标签: 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/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开发出现此错误的问题,但我无法判断是否以及如何适用于我的情况。任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:7)

向所有人道歉,这显然是愚蠢的,但事实证明我在文档中根本没有“atom”的命名空间定义。我猜“未绑定的前缀”意味着前缀“atom”没有“绑定”到命名空间定义?

无论如何,添加所述定义已经解决了这个问题。虽然它让我想知道为什么WordPress导出XML文件而没有对他们使用的所有命名空间的正确定义......

答案 1 :(得分:1)

如果删除所有名称空间,则工作正常。

更改

<s:home>USA</s:home>

<home>USA</home>

答案 2 :(得分:0)

为了有一天能对某人有所帮助,我也在使用Python中的WordPress XML导出(WordPress扩展RSS)文件,并遇到了相同的错误。就我而言,WordPress包含了 most 个正确的名称空间定义。但是,XML也具有iTunes播客信息,并且iTunes名称空间声明不存在。

我通过在RSS声明块中添加<action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 来修复它。所以这个:

   $('form').submit(function(){
        $(this).find('input').each(function(){
            $(this).val($.trim($(this).val()));
        });
    });

成为这个:

xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"