如何获取具有不同命名空间的元素

2023-12-29

我希望获取下面 xml 的元素名称。 我的请求中的问题是我想获取有效负载元素。为此我使用了这个表达

name(//env:Payload)

所以我得到这个结果环境:有效负载

<env:requeset xmlns:env="http://eai.ssss.xxx/Envelope" xmlns:ggg="http://fai.dgn.sss/ggg">
<env:clientbody>
<env:Payload>
<ggg:Service>
<ggg:Request>
<a>name</a>
<b>age</b>
<c>address</c>
</ggg:Request>
</ggg:Service>
</env:Payload>
</env:clientbody>
</env:requeset>

但有时我的客户端发送带有不同元素的请求,有时也发送没有命名空间的请求。那么我如何得到以下请求

<requeset xmlns:="http://eai.ssss.xxx/Envelope" xmlns:ggg="http://fai.dgn.sss/ggg">
<clientbody>
<Payload>
<ggg:Service>
<ggg:Request>
<a>name</a>
<b>age</b>
<c>address</c>
</ggg:Request>
</ggg:Service>
</Payload>
</clientbody>
</requeset>

对于上述请求,我使用相同的表达式,因此它会给出错误,那么我如何在 2 种情况或任何情况下获取 Payload 元素。 我已经尝试过这个但它不起作用

name(//( local-name()='Payload'))

它的给予ERROR - Failed to evaluate XPath expression: A location step was expected following the '/' or '//' token.

因此,请指导获取没有名称空间和不同名称空间的元素,我也尝试过包含表达式,但我无法得到它。


从错误信息可以看出,您编写的语法不正确。如果你想比较每个元素的本地名称,你可以这样做:

//*(local-name() = 'Payload')

但是等等,有更好的选择可以实现这一目标。您在这里所做的基本上是忽略名称空间。您还可以使用通配符命名空间运算符*用更清晰的语法来实现这一点。这很简单

//*:Payload

如果您仍然想尊重命名空间,您还可以使用 union 运算符合并两个结果|。这样,您就可以获得带有 env 命名空间且不带任何命名空间的 Payload 元素:

//env:Payload | //Payload

当然,在所有这些情况下您都可以使用name()获取元素名称。

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

如何获取具有不同命名空间的元素 的相关文章

随机推荐

  • Parent TreeView Item鬼选事件!

    我有一个 TreeView 当引发每个 TreeViewItems Selected 事件时 它会启动一个新窗口
  • Erlang 代码来测量执行操作所花费的时间?

    有人能好心地向我指出一些 erlang 代码吗 它允许我计算运行某些代码片段需要多长时间 我还没有看到有可用的 erlang 库吗 您可以使用erlang statistics http www erlang org doc man erl
  • iOS 钥匙串偶尔会返回空字符串

    我编写了非常安全的应用程序 为银行 并将私钥保存在钥匙串中 我使用以下代码保留私钥 void savePrivatekey NSString Key KeychainItemWrapper keychain KeychainItemWrap
  • 如何调试Android ANR?

    我的 Android 应用程序最近在 Google Play 控制台中收到了大量 ANR 报告 由于这种情况是在我将 Google Analytics 添加到应用程序中时开始发生的 因此我强烈怀疑是 Analytics 造成的 问题是我知道
  • ggVis:在不同数据集上创建具有多个图层的绘图

    我正在尝试使用 ggvis 重现 ggplot2 图 该图旨在表示点的坐标 来自对应分析 及其簇 hclust 标准色散椭圆 TL DR 我想根据多个数据集制作一个具有多个图层的 ggvis 图 因此 功能 管道方法阻止我对其中一层进行分组
  • 如何忽略特定http动词(GET,POST,PUT)的swagger资源属性

    我们实现了 spring Fox swagger 2 版本 2 6 1 我想显示 HTTP GET 方法而不是 POST 方法的资源的特定属性 我还没有找到任何使用 swagger 2 的方法 请帮助 谢谢 例如 Class Employe
  • 在 Cucumber 中通过 CSV 文件使用剩余数据

    我想通过 CSV 文件上传测试数据 而不是使用 Cucumber 中的功能文件 有没有办法在功能文件中上传 CSV 以获取测试数据 在 Cucumber 中无法用 csv 文件替换特征文件 您需要从您的步骤中读取 csv 文件 如果您使用
  • MySQL 查询检索具有列名的数据

    我正在编写一些工具 当对其应用任何查询时 该工具必须检索检索到的数据集的列名 如果您熟悉 phpMyAdmin 您会意识到 SQL 窗格的作用是运行查询并显示带有列名称的结果 我想知道查询有多难 它总是会产生列名称 而幕后的实际编程是什么
  • 如何使用 iPhone SDK 暂停视频录制?

    我看到有一个名为 iFile 的应用程序 在录制视频时具有暂停功能 他们如何做到这一点 我尝试使用 AVMutableComposition 类 当用户暂停时 我剪切一个新视频 然后在最后合并视频 但是合并视频的处理时间并不理想 有人可以给
  • ASP.NET MVC 6应用程序的虚拟应用程序根路径

    如何获取应用程序在服务器上的虚拟根路径 换句话说 如何在 ASP NET MVC 6 中执行以下操作 您所需要的可以通过以下方式实现 Url Content 这会将 映射到您的虚拟应用程序根路径 看看源代码 https github com
  • 在状态管理器中对视图状态进行动画处理

    我有一个具有 2 个视图状态的状态管理器实现 我想推迟状态的正常删除 并在视图被销毁并且状态管理器转换到另一个状态时添加自定义动画 这是一个 jsFiddle http jsfiddle net Xkg6X http jsfiddle ne
  • 从跨域加载 vtt 的问题

    我在从跨域加载 vtt 时遇到问题 加载 URL 域的尝试不安全 协议和端口必须匹配 我尝试将 crossorigin true 添加到视频中 它在 Chrome 和 Firefox 中工作 但在 Internet Explorer 11
  • jQuery UI 的 Draggable 和页面滚动

    我注意到 当我使用 jQuery UI 的可拖动功能时 我必须在页面上向上 向下拖动元素 以强制滚动 被拖动的元素的跳跃速度似乎是鼠标光标的两倍 这会导致非常不稳定的行为 并且几乎无法使用 我的意思的一个例子可以在这里找到 http tin
  • 选择名称与 PostgreSQL 中的正则表达式匹配的列

    我怎样才能只选择那些columns谁的名字与 PostgreSQL 中的正则表达式匹配 例如 如何仅选择下表中名称以 A 开头的列 而不在选择列表中显式枚举它们 id A1 A2 A3 A4 A5 B 1 a b c d e f 2 g h
  • RethinkDB 用于过滤器 + orderby 的索引

    让我们说一个comments表具有以下结构 id author timestamp body 我想使用索引来有效地执行以下查询 r table comments getAll me index author orderBy timestam
  • 如何保持元素不刷新

    主要目标是保持徽标文本不刷新 div class small 7 medium 4 columns logo 和菜单 div
  • laravel - 刀片模板布局结构为每 4 个跨度添加行流体

    我有这个刀片模板 div class row fluid foreach courses as course div class span3 learn Content div endforeach Output div class row
  • 使用 SheetJS 设置日期格式

    预先感谢您百忙之中看一下这个问题 我正在尝试使用 SheetJS 读取 xlsx 文件 但在处理通过 Excel 格式化为自定义 yyyy mm dd hh mm ss 的日期列时遇到一些问题 所有这些日期都显示为大浮点值 以下是在上传时读
  • 从已发布的 Google 文档电子表格中删除页眉和页脚 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我找到了用于删除 Google 文档电子表格上的网格线的 JavaScript 解决方案 使用 下载为 HTML 然后在网址栏中使用 Ja
  • 如何获取具有不同命名空间的元素

    我希望获取下面 xml 的元素名称 我的请求中的问题是我想获取有效负载元素 为此我使用了这个表达 name env Payload 所以我得到这个结果环境 有效负载