Golang XML:解组忽略名称空间

2023-12-23

我正在 Go 系统中实现一项从外部 SOAP 服务读取数据的服务。现在我正在为其编写测试,我遇到了这个问题:

unable to unmarshal request body for testing: expected element type <soapenv:Envelope> but have <Envelope>

如果我转储数据,我会得到以下结果:

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:v2 [...]

所以我在 XML 中有正确的命名空间。根据记录,这是我试图将数据解组到的结构:

type collectRequestXML struct {
    XMLName xml.Name `xml:"soapenv:Envelope"`
    SoapEnv string   `xml:"xmlns:soapenv,attr"`
    XMLNs   string   `xml:"xmlns:v2,attr"`
    Header  struct{} `xml:"soapenv:Header"`
    Body    struct {
        [...]
    }
}

我该怎么做才能使解组失败?

See 这个游乐场项目供参考 https://play.golang.org/p/0ee2RpL2c7P.


XML 包的文档中关于命名空间的描述还不够。解析非常简单。对命名空间有少量支持。它可以解析 XML,但是当你创建 XML 时,它对命名空间的支持不够。

当您删除结构体中的命名空间信息时,您的结构体就可以工作了XMLName定义:

type myStruct struct {
    XMLName xml.Name `xml:"Envelope"`
    SoapEnv string   `xml:"xmlns:soapenv,attr"`
    Header  struct{} `xml:"soapenv:Header"`
    Body    struct {
        MyData string `xml:"my-data"`
    }
}

https://play.golang.org/p/UppXwx0X0i9 https://play.golang.org/p/UppXwx0X0i9

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

Golang XML:解组忽略名称空间 的相关文章

  • 如何将 int[] 转换为 uint8[]

    所以 我需要你的帮助 我找不到关于该主题的任何内容 Golang 是一门刚刚诞生的语言 所以对于像我这样的新手来说很难快速找到答案 预先声明的 Goint类型大小是特定于实现的 32 位或 64 位 数字类型 http golang org
  • 如何将 Unicode 字符转换为简单形式? [复制]

    这个问题在这里已经有答案了 有没有一个Go库可以Sj str m作为输入和返回Sjostrom作为输出 您可以使用golang org x text unicode norm来处理这个问题 package main import fmt i
  • 如何使信号量超时

    Go 中的信号量是通过通道来实现的 一个例子是这样的 https sites google com site gopatterns concurrency semaphores https sites google com site gop
  • Golang中按长度分割字符串

    有谁知道如何在 Golang 中按长度分割字符串 例如 每 3 个字符分割 helloworld 那么理想情况下它应该返回一个 hel low orl d 数组 或者 一个可能的解决方案是在每 3 个字符后附加一个换行符 所有的想法都非常感
  • 为什么 json.Unmarshal 返回映射而不是预期的结构?

    看看这个游乐场 http play golang org p dWku6SPqj5 http play golang org p dWku6SPqj5 基本上 我正在工作的图书馆收到了interface 作为参数 然后需要json Unma
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何同时使用 LoadHTMLGlob 和 LoadHTMLFiles

    我想要来自不同子目录的分隔符逻辑模板templates文件夹 下面是我的templates文件夹 templates authentication login gohtml logout gohtml index gohtml profil
  • 如何关闭 gorm 1.20.0 中的数据库实例

    由于我没有在 Close 函数中找到 gorm 实例 任何帮助将不胜感激 dbURI fmt Sprintf user s password s dbname s port s sslmode s TimeZone s username p
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • 使用 mgo 驱动程序进行 mongo 聚合查询

    我在 mongodb 中有以下查询 db devices aggregate match userId v73TuQqZykbxFXsWo state true project userId 1 categorySlug 1 weight
  • 如何在 Go 中填写 void* C 指针?

    我正在尝试与 Go 中的一些 C 代码交互 使用 cgo 这一直相对简单 直到我遇到这种 相当常见 的情况 需要将指针传递给本身包含指向某些数据的指针的结构 我似乎无法弄清楚如何从 Go 中做到这一点 而不诉诸于将结构的创建放入 C 代码本
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • 单值上下文中的多值错误

    我在编译 GO 代码时遇到此错误 multiple value fmt Println in single value context 我正在尝试创建一个函数 该函数接受可变数量的整数并将每个变量打印在一行上 GO package main
  • 将产生 goroutine 的 golang 方法

    据我所知 如果 goroutine 太忙 它们会阻止其他 goroutine 运行 对我来说 这意味着我的应用程序的性能和响应能力可能取决于我知道哪些库方法将控制其他 goroutine 例如通常是 Read 和 Write 有什么方法可以
  • 有没有办法间歇性地执行重复性任务?

    有没有办法在 Go 中执行重复的后台任务 我在想类似的事情Timer schedule task delay period 在爪哇 我知道我可以用 goroutine 来做到这一点Time sleep 但我想要一些容易停止的东西 这是我得到
  • 如何拥有在标准输出上更新的就地字符串

    我想输出到标准输出并让输出 覆盖 以前的输出 例如 如果我输出On 1 10 我想要下一个输出On 2 10覆盖On 1 10 我怎样才能做到这一点 stdout是一个流 io Writer 您无法修改已写入其中的内容 什么can更改的是该
  • 为什么 DER ASN.1 大整数的解组在 Golang 中仅限于 SEQUENCE?

    我希望能够使用encoding asn1 包从 DER 文件中解组一个大整数 但它看起来只适用于整数序列 例如 这不起作用 这很奇怪 因为 Big Int 的编组效果很好 https play golang org p Wkj0jAA6bp
  • 如何构建一个不链接到 musl libc 的 go 可执行文件

    So 官方的 Go 构建容器基于 Alpine 高山用途musl https www musl libc org 作为 libc 而不是 glibc 我需要在容器中构建一个可以在使用 glibc 的 Ubuntu 上运行的 Go 可执行文件
  • 管理多租户 ArangoDB 连接

    我使用 ArangoDB Go 使用 go driver 并且需要实现多租户 这意味着每个客户都将在单独的数据库中拥有他的数据 我想要弄清楚的是如何使这种多租户发挥作用 我知道为每个请求创建一个新的数据库连接是不可持续的 这意味着我必须维护
  • 共享 GOPATH 的良好做法是什么?

    我刚刚开始学习 Go 并阅读现有代码以了解 其他人是如何做的 在这样做时 go 工作空间 的使用 特别是当它与项目的依赖项相关时 似乎无处不在 在处理各种 Go 项目时 使用单个或多个 Go 工作区 即 GOPATH 的定义 的常见最佳实践

随机推荐

  • 用于奇异控制流的 ES6 Promise 模式

    ES6 Promise 很棒 到目前为止 调整我的想法很容易 回调习惯用法 我发现它自然地鼓励更多的模块化代码 并且 当然错误处理更加清晰 但有几次我遇到了看起来不像 的心流情况 可以很容易地从节点返回到承诺 也许就是这样 但也许我只是对答
  • 如何在 VS Code 设置中为 VS Code 进程指定环境变量?

    我发现这两种方法来添加环境变量 添加环境变量terminal integrated env osx对于终端 添加环境变量launch json用于调试 但 VSCode Process 没有类似的配置选项 一些插件经常需要访问特定的环境变量
  • C++ 中的 rand() 和 srand()

    C 中生成随机数的基础是什么 这背后有什么逻辑或者原理吗 生成的数字是完全随机的吗 假设我正在运行这个程序 include
  • 在javascript中获取元数据属性

    我在从元标记检索信息时遇到问题 我正在尝试从网站获取 img src 但不太明白 这是我正在尝试做的一个例子 var image document querySelector meta property og image getAttrib
  • 如何在引导模式主体上创建具有固定标题的可滚动表格?

    我尝试了这个 但这不起作用 字段值是动态变化的 所以宽度不固定 div class table responsive table class table table hover thead tr tr thead tbody style h
  • 对 Django Q 对象执行逻辑异或

    我想执行逻辑异或 XOR http en wikipedia org wiki Exclusive disjunction on django db models Q对象 使用operator http docs python org 2
  • if 语句无论条件是否满足都运行

    我的 if 语句贯穿始终 就好像条件已满足 即使条件尚未满足 我尝试过移动一些代码 甚至以不同的方式重写 if 语句 但它并没有改变结果 有谁知道我做错了什么 include
  • 如何将字节数组转换为MultipartFile

    我正在接收 BASE64 编码字符串 encodedBytes 形式的图像 并使用以下方法在服务器端解码为 byte BASE64Decoder decoder new BASE64Decoder byte decodedBytes dec
  • 平均特定数字的随机数

    看起来很简单 但我想要一个公式 最好是 net 对于给定的数字 比如说 1 5 公式将输出一个随机数 该数字在一系列中平均约为 1 5 所以它可能是 0 1 1 2 7 1 2 5 2 等 但平均值将接近1 5 澄清 我希望这些数字是正数
  • 在 Mobile Safari 上的 CSS 中使用右浮动时字体大小错误

    我在使用简单的 CSS 布局时遇到问题 它适用于桌面浏览器 但不适用于 iPhone 的 Mobile Safari 使用 style float right 似乎与 Mobile Safari 进行的自动字体大小调整相冲突 以下代码在桌面
  • shmget() 返回的 shmid 在进程中是否唯一?

    这是我无法真正弄清楚的事情 如果你在Linux上使用相同的密钥但在不同的进程中调用shmget 你会得到相同的shmid吗 shmid 是一个临时值 例如文件描述符编号 还是可以在调用之间保留的值 是的 您将收到相同的 shmid 共享内存
  • 如何相对于图像定位 div?

    我有一张图像 它可能会根据某些操作和我想要的几个 div 来改变其位置position on the img tag 简化后的代码如下 div img src someRandomImageUrl div foobar div div 为了
  • Symfony3:致命错误:在 .\bin\console 中找不到类“AppKernel”

    刚开始做一个项目 我跑了composer update并在尝试清除缓存时遇到异常 当我尝试跑步时php bin console server run我收到这样的消息 php bin console server run PHP Fatal
  • 在唯一约束之前清理 SQL 数据

    我想在对两列添加唯一约束之前清理表中的一些数据 CREATE TABLE test a integer NOT NULL b integer NOT NULL c integer NOT NULL CONSTRAINT a pk PRIMA
  • 与Butterknife绑定以在android中动态添加视图

    如何绑定布局中存在的视图 该布局是使用 ButterKnife 动态添加到父视图的 我有一个 LinearLayout 说容器 我有一个自定义布局 其中包含两个按钮 将此布局表示为子视图在活动中我添加了子视图成功到父LinearLayout
  • UILabel sizeToFit 仅适用于关闭自动布局的情况

    所以我正在使用 iOS 6 制作一个应用程序 并且想知道为什么我的代码曾经在 iOS 5 上运行良好 但现在不再运行了 我有一个带有动态 UILabel 的单元格 它会根据它所携带的文本进行调整 这是打开自动布局的情况 这是关闭自动布局的情
  • 使 VBE 助手在使用其他办公应用程序的功能/命令时显示

    我正在编写一些操作其他办公应用程序 office 的代码 当我编写代码时 我希望 VBE 帮助我处理属性和函数 就像它对链接到 Excel 的代码一样 这是怎么做到的 例如 当我输入 word doc 并在后面添加一个点时 我希望 VBE
  • 用于监视 FTP 服务器上的更改的批处理脚本

    我想要制作一个批处理脚本 能够侦听我的 ftp 服务器 并在每次在 ftp 服务器上上传新文件时将文件下载到我的计算机 有任何想法吗 我用的是WinSCP 您可以使用WinSCP 脚本 https winscp net eng docs s
  • WPF - 具有三列的 GridSplitter

    我有一个带有 3 列网格的应用程序 第一列和第二列之间的网格分离器工作得很好 为了使分离器位于第二列和第三列之间 我为分离器制作了一列 所以现在第三列实际上是第四列 当我调整大小时 其他列也会缩小 我认为这是因为我将它们设置为相对大小 但我
  • Golang XML:解组忽略名称空间

    我正在 Go 系统中实现一项从外部 SOAP 服务读取数据的服务 现在我正在为其编写测试 我遇到了这个问题 unable to unmarshal request body for testing expected element type