Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python WordPress XML解析错误:未绑定前缀?_Python_Wordpress_Xml Parsing - Fatal编程技术网

Python 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

我试图使用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开发中看到了很多关于这个错误的问题,但我不知道这是否适用于我的情况,以及如何适用于我的情况。有人能帮上忙吗?

向所有人道歉,对于他们来说,这是非常明显的,但事实证明,我在文档中根本没有“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"
>