Python xml.ElementTree - 在变量中返回解析后的 xml 以供稍后使用的函数

JanFi86

我有一个向 xml 发送获取请求和解析响应的函数:

def get_object(object_name):
    ...
    ...
    #parse xml file
    encoded_text = response.text.encode('utf-8', 'replace')
    root = ET.fromstring(encoded_text)
    tree = ET.ElementTree(root)
    return tree

然后我使用这个函数从列表中循环对象以获取 xmls 并将它们存储在变量中:

jx_task_tree = ''
for jx in jx_tasks_lst:
    jx_task_tree += str(get_object(jx))

我不确定,如果该函数以正确的格式/形式返回我的数据,以便稍后按照我需要的方式使用它们。

当我想像这样解析变量 jx_task_tree 时:

parser = ET.XMLParser(encoding="utf-8")
print(type(jx_task_tree))
tree = ET.parse(jx_task_tree, parser=parser)
print(ET.tostring(tree))

它给我一个错误:

Traceback (most recent call last):
  File "import_uac_wf.py", line 59, in <module>
    tree = ET.parse(jx_task_tree, parser=parser)
  File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 1182, in 
parse
    tree.parse(source, parser)
  File "/usr/lib64/python2.7/xml/etree/ElementTree.py", line 647, in parse
    source = open(source, "rb")
IOError: [Errno 36] File name too long: 
'<xml.etree.ElementTree.ElementTree 
object at 0x7ff2607c8910>\n<xml.etree.ElementTree.ElementTree object at 
0x7ff2607e23d0>\n<xml.etree.ElementTree.ElementTree object at 
0x7ff2607ee4d0>\n<xml.etree.ElementTree.ElementTree object at 
0x7ff2607d8e90>\n<xml.etree.ElementTree.ElementTree object at 
0x7ff2607e2550>\n<xml.etree.ElementTree.ElementTree object at 
0x7ff2607889d0>\n<xml.etree.ElementTree.ElementTree object at 
0x7ff26079f3d0>\n'

有人能帮我吗,函数 get_object() 应该返回什么以及以后如何使用它,那么返回的内容可以加入一个变量并进行解析?

克里斯蒂·法蒂

关于您当前的例外情况:

根据[Python 3.Docs]:xml.etree.ElementTree。parse ( source, parser=None )重点是我的):

将 XML 部分解析为元素树。source包含 XML 数据的文件名或文件对象

如果要从字符串加载XML,请ET.fromstring改用。

然后,正如您所怀疑的,第二个代码片段是完全错误的:

  • get_object(jx)返回一个已经解析的XML,所以一个ElementTree对象
  • 对其调用str将产生其文本表示(例如"<xml.etree.ElementTree.ElementTree object at 0x7ff26079f3d0>"),这不是您想要的

你可以这样做:

jx_tasks_string = ""
for jx in jx_tasks_lst:
    jx_tasks_string += ET.tostring(get_object(jx).getroot())

由于jx_tasks_string是通过解析一些XML blob获得的一些字符串的串联,因此没有理由再次解析它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python ElementTree解析XML

来自分类Dev

使用ElementTree解析XML

来自分类Dev

使用ElementTree的递归XML解析python

来自分类Dev

使用xml子对象,Python中的ElementTree

来自分类Dev

使用ElementTree在Python中解析XML-findall

来自分类Dev

使用ElementTree在Python中解析XML-findall

来自分类Dev

使用elementtree解析xml网站

来自分类Dev

使用elementtree解析xml站点

来自分类Dev

使用Python和ElementTree在XML中搜索变量属性

来自分类Dev

python(xml.etree.ElementTree)中的XML解析

来自分类Dev

使用python ElementTree解析XML:ParseError:标记不匹配

来自分类Dev

Python-使用ElementTree解析具有重复标签的XML

来自分类Dev

如何使用 Python ElementTree 在 XML 解析期间检查条件

来自分类Dev

XML解析Python ElementTree-嵌套循环

来自分类Dev

Python - ElementTree XML API(未按预期解析)

来自分类Dev

如何使用ElementTree递归遍历Python中的XML标签?

来自分类Dev

如何使用ElementTree在python中制作xml树的副本?

来自分类Dev

使用python中的ElementTree删除特定的xml标签

来自分类Dev

如何使用Python elementTree提取xml数据中的特定元素

来自分类Dev

使用 Python 3 ElementTree 的 XML 文档中的多个命名空间

来自分类Dev

ElementTree:解析XML的曾孙

来自分类Dev

使用ElementTree Python获取检索XML属性

来自分类Dev

使用python的ElementTree处理xml子对象

来自分类Dev

在Python中使用ElementTree从XML提取数据

来自分类Dev

使用Python ElementTree从XML中提取值

来自分类Dev

Python 2.5:XML中的ElementTree和UML

来自分类Dev

使用ElementTree解析XML中的XML节点值

来自分类Dev

使用ElementTree修改XML

来自分类Dev

解析elementTree以XML格式返回字符串-Python

Related 相关文章

热门标签

归档