3

我正在尝试使用 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 开发中出现的这个错误的问题,但我不知道这是否以及如何适用于我的情况。有人能帮忙吗?

4

3 回答 3

8

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

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

于 2012-09-14T05:27:01.520 回答
1

如果您删除所有名称空间,则工作得很好。

改变

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

<home>USA</home>
于 2016-12-02T11:46:43.273 回答
0

以防万一有一天它对某人有所帮助,我还在 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"
>
于 2018-08-16T22:03:43.847 回答