我正在App Engine上进行一些工作,我需要将从远程服务器检索到的XML文档转换为等效的JSON对象。
我xml.dom.minidom
用来解析由返回的XML数据urlfetch
。我还尝试使用django.utils.simplejson
将已解析的XML文档转换为JSON。我对如何将两者钩在一起完全不知所措。以下是我要修改的代码:
from xml.dom import minidom
from django.utils import simplejson as json
#pseudo code that returns actual xml data as a string from remote server.
result = urlfetch.fetch(url,'','get');
dom = minidom.parseString(result.content)
json = simplejson.load(dom)
self.response.out.write(json)
Soviut对于lxml objectify的建议是好的。使用特殊子类化的simplejson,您可以将lxml对象化结果转换为json。
import simplejson as json
import lxml
class objectJSONEncoder(json.JSONEncoder):
"""A specialized JSON encoder that can handle simple lxml objectify types
>>> from lxml import objectify
>>> obj = objectify.fromstring("<Book><price>1.50</price><author>W. Shakespeare</author></Book>")
>>> objectJSONEncoder().encode(obj)
'{"price": 1.5, "author": "W. Shakespeare"}'
"""
def default(self,o):
if isinstance(o, lxml.objectify.IntElement):
return int(o)
if isinstance(o, lxml.objectify.NumberElement) or isinstance(o, lxml.objectify.FloatElement):
return float(o)
if isinstance(o, lxml.objectify.ObjectifiedDataElement):
return str(o)
if hasattr(o, '__dict__'):
#For objects with a __dict__, return the encoding of the __dict__
return o.__dict__
return json.JSONEncoder.default(self, o)
请参阅文档字符串以获取用法示例,从本质上讲,您将lxml的结果传递objectify
给的实例的encode方法objectJSONEncoder
请注意,Koen的观点在这里非常有效,以上解决方案仅适用于简单嵌套的xml,并且不包含根元素的名称。这可以解决。
我在以下要点中包含了该类:http :
//gist.github.com/345559
问题内容: 我在SO上看到许多问题,询问将XML转换为JSON的方法,但我对采用其他方法感兴趣。是否有用于将JSON转换为XML的python库? 编辑: 什么都没有马上回来,所以我继续写了一个脚本来解决这个问题。 Python已经允许您将JSON转换为本地dict(使用或在版本2.6以下的中,),因此我编写了一个库,可将本地dict 转换为XML字符串。 https://github.com/q
问题内容: 我需要加载XML文件并将内容转换为面向对象的Python结构。我要这样: 并将其变成这样: XML数据将具有比这更复杂的结构,并且我无法对元素名称进行硬编码。解析时需要收集属性名称并将其用作对象属性。 如何将XML数据转换为Python对象? 问题答案: 值得一看。 或者以另一种方式构建xml结构: 输出:
问题内容: 以下是我的json文件输入 码 输出量 因此,在这里我确实得到了答案,但是没有打印一次,而是打印了7次。如何解决此问题。 问题答案: 是一个字典,您不需要对其进行迭代。您可以使用键直接访问值。 例如:
问题内容: 我对编程非常陌生,过去3/4星期一直在学习python,这是给出的作业之一。 输入项 输出量 我一直在尝试代码为: 此代码的输出如下: 谁可以帮我这个事? 问题答案: 处理完整行后转储。
我想把下面的XML转换成PHP数组。有什么建议可以让我如何做到这一点吗?
问题内容: 我想将下面的XML转换为PHP数组。关于如何执行此操作的任何建议? 问题答案: 另一个选择是SimpleXML扩展(我相信大多数PHP安装都标配该扩展名。) http://php.net/manual/zh/book.simplexml.php 您的示例的语法看起来像这样