如何从 suds 响应中获取未解析的 XML,以及用于存储的最佳 django 模型字段

2023-12-29

我正在使用 suds 使用 wsdl 向第三方请求数据。我现在只保存一些返回的数据,但我正在为获得的数据付费,所以我想保留所有数据。我决定保存此数据的最佳方法是将原始 xml 响应捕获到数据库字段中,以便将来在我决定开始使用数据的不同部分时使用,并在出现差异时作为书面记录。

所以我有一个由两部分组成的问题:

有没有一种简单的方法可以输出从 suds.client 对象接收到的原始 xml?在我寻找这个问题答案的过程中,我了解到这可以通过日志记录来完成,但我希望不必从日志中挖掘该信息以放入数据库字段。我还研究了 MessagePlugin.recieved() 挂钩,但无法真正弄清楚如何在解析后访问此信息,只是我可以覆盖该函数并在解析时访问原始 xml (这是在我决定它是否真的值得保存之前)。我还探索了 retxml 选项,但我也想使用已解析的版本,并进行两个单独的调用,一个作为 retxml,另一个已解析将花费我两倍的费用。我希望在 suds 客户端中内置一个简单的函数(例如 response.as_xml() 或同样简单的函数),但还没有找到类似的函数。我脑海中浮现的选项可能是使用 .received() 插件钩子来扩展客户端对象,该钩子在解析 xml 之前将其保存为对象参数,以便稍后引用......但是这样的执行似乎有点现在对我来说很棘手,我很难相信肥皂水客户端不仅仅已经在某个地方内置了这个,所以我想我应该先问一下。

我的问题的另一部分是:哪种类型的 django 模型字段最适合处理高达 ~100 kb 的文本数据作为原始 xml?我本来打算简单地使用一个简单的 CharField 和一个愚蠢的长 max_length ,但这感觉不对。

提前致谢。


我通过在客户端初始化时使用标志 retxml 解决了这个问题:

client = Client(settings.WSDL_ADDRESS, retxml=True)
raw_reply = client.service.PersonSearch(soapified_search_object)

然后我能够将 raw_reply 作为原始 xml 保存到 django models.TextField() 中 然后注入原始 xml 以获得 suds 解析结果,而无需重新提交我的搜索,如下所示:

parsed_result = client.service.PersonSearch(__inject={'reply': raw_reply})

我想如果我想从原始回复中去掉泡沫信封内容,我可以使用 python xml 库来进一步使用回复,但由于我现有的代码已经从泡沫客户端结果中获取了我想要的信息,所以我只是用过那个。

希望这对其他人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 suds 响应中获取未解析的 XML,以及用于存储的最佳 django 模型字段 的相关文章

随机推荐

  • Play框架2.0 JPA Mysql错误:无法构建EntityManagerFactory

    我试图使用 Play 框架 2 0 构建一个 Java 项目 我尝试在剧中配置JPA 如下所示 conf 应用程序 conf Database configuration You can declare as many datasource
  • 如何禁用 Firefox 加载项在启动时进行更新检查 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我使用 cron job 通过命令行启动 Firefox Linux 当附加组件没有更新时 它会正常启动 然后我可以告诉它要做什么 但是 如果附加组件
  • 显示/隐藏情节的图例

    我对 python 比较陌生 正在开发 pyqt GUI 我想提供一个复选框选项来显示 隐藏绘图的图例 有没有办法隐藏传说 我尝试过使用 pyplot 的 nolegend 并且它似乎适用于选定的图例条目 但如果应用于所有条目 它会创建一个
  • Ubuntu 16.04:致命错误:X11/Xlib.h:没有这样的文件或目录

    我正在尝试安装 Rgtk2 拨浪鼓的依赖项 我通过 Anaconda 使用 R 我收到以下错误 In file included from Rgtk c 7 0 usr include gtk 2 0 gdk gdkx h 32 10 fa
  • 如何检查 iptables 中每个规则的命中计数?

    我想知道如何从使用 iptables 创建的访问列表中找出访问了哪个规则以及访问了多少次 我的防火墙在 iptables 中有超过 1000 个输入和输出规则 我想知道它们每个被访问了多少次 例如 假设我有以下规则 iptables A I
  • 更改多个绘图的 ggplot 中的 y 轴限制

    我有以下ggplot 这是使用以下脚本生成的 df long lt melt df ggplot df long aes x variable y value geom boxplot facet wrap variable scales
  • 每次点击时 jQuery 克隆 div

    我有一个简单的表单 并有一个按钮可以在单击时克隆我的表单 问题是 当我第一次单击按钮时 它工作正常 但下次单击时它会附加许多 div 有没有办法每次点击都一张一张复制 这是我的片段 document ready function Add c
  • 在不同的 Windows 和 Mac 机器之间共享 Android Studio 项目

    我有一个在 Windows 下构建的 Android Studio 项目 现在当我将所有文件夹复制到 Mac 并尝试在 Mac 版本的 Android Studio 中打开它时 它会提示很多错误 大多数错误都指向 Windows 计算机上的
  • 如何从 SwiftUI 中的另一个视图删除列表中的项目?

    我制作了一个练习应用程序 其中主视图是一个简单的列表 当点击列表中的项目时 它会显示详细视图 详细信息视图中有一个 删除 按钮 用于删除该项目 如何从详细视图中删除每个项目 主要观点 struct ContentView View Envi
  • 派生类的友元的成员访问规则,其中命名类是基类

    All standard references below refer unless noted otherwise to N4861 March 2020 post Prague working draft C 20 DIS https
  • jQuery 函数绑定“输入属性更改”未按预期触发

    我有 jQuery 代码调用这样的函数 text area bind input propertychange function 绑定到该函数的元素是文本区域 当我键入并删除文本时 该函数会被调用 但是当我通过热键或拖动鼠标选择所有文本 然
  • 从 Swift macOS 应用程序中调用 git 命令

    我正在尝试从我的应用程序中调用终端命令 特别是 git 命令 在最简单的情况下 我们只是说我想打电话git status对于给定的目录 我的应用程序的目的是对 git 进行包装 以提供 git 工具的使用 而无需用户与命令行进行任何直接交互
  • SQL返回不在表中的随机数

    我有一个包含 user ids 的表 该表是我们从活动帐户的流数据源中收集的 现在我正在查看并填写有关 user ids 的信息 但这些信息不做任何事情 是否有一种 SQL postgres 如果重要的话 方法可以让查询返回表中不存在的随机
  • 如何将 Eclipse jdt jar 库放入 Java 构建路径中?

    我正在尝试使用 eclipsejdt 我尝试在java源文件中导入相关模块 我有很多错误 因为 jdt 库不在 Java 构建路径中 我尝试打开Add Libary gt Plug in Dependencies 但它没有 jdt jar
  • 打开Matlab保存的.fig文件的程序

    有没有任何程序可以打开Matlab保存的 fig文件 更新 29 04 2016 根据johnml1135 的回答 https stackoverflow com a 36923358 2140414 fig 文件本质上只是 mat 文件
  • 如何使用 Opencv 和 python 播放网络视频

    我正在寻找简单地使用 opencv 开发一些东西 我希望使用 opencv 从网络上播放视频 就像您可以通过传递位置路径来播放笔记本电脑上的视频一样 现在尝试传递视频 url 并让它播放 到目前为止我正在获取错误任何建议都会很好 impor
  • 如何让 jQuery .get 返回 JSON 数据?

    我正在尝试使用 AJAX 从 URL 获取信息 此 URL 将返回 JSON 响应 但我在使其正常工作时遇到了很大的麻烦 我对使用 AJAX 和 JSON 相当陌生 所以我不太确定我做错了什么 我没有收到任何输出 这是我到目前为止所拥有的
  • 我需要有关此 C++ 算法的一些帮助

    我正在尝试解决算法问题 但找不到解决方案 任务是输出达到某种灯配置所需的最少步骤数 有两行灯和 N 11011 11011 or 11101101111000101010 01111101100000010100 这些灯可以 开 1 或 关
  • html 5 视频是在页面加载时缓冲还是仅在播放视频时缓冲?

    如果我想在页面上嵌入 20 个视频 它们会在页面加载时开始缓冲 还是会等到第一次播放 交互 如果它们在加载时缓冲 我如何才能避免这种情况 直到我想显示视频 我不希望用户在只观看一个甚至根本不观看的情况下缓冲 20 个视频 您正在查看的是pr
  • 如何从 suds 响应中获取未解析的 XML,以及用于存储的最佳 django 模型字段

    我正在使用 suds 使用 wsdl 向第三方请求数据 我现在只保存一些返回的数据 但我正在为获得的数据付费 所以我想保留所有数据 我决定保存此数据的最佳方法是将原始 xml 响应捕获到数据库字段中 以便将来在我决定开始使用数据的不同部分时