javascript - Javascript XPATH 获取重复子节点的最后一个元素
问题描述
我正在尝试找到一种方法来获取 XML 响应中元素的最后一个实例。XML 包含错误详细信息,其中包含一个包含完整错误详细信息的对象:
<error description="Anything">
<object>
<error description="Actual Error">
<!-- error information in here -->
<errorCode>123</errorCode>
<message>Error message</message>
</error>
</object>
</error>
我总是想要最后一个“错误”,我可以从上面得到错误详细信息
error.xpath('/error/object/error').item(0).getAttribute('description');然后是后续的详细信息(代码、消息等)
如果错误通过多个异常处理程序冒泡,就会出现问题,因为每个异常处理程序都添加了自己的错误元素,所以它最终看起来像这样:
<error description="Anything">
<object>
<error description="Something Else">
<object>
<error description = "Actual Error">
<!-- error information in here -->
<errorCode>123</errorCode>
<message>Error message</message>
</error>
</object>
</error>
</object>
</error>
这种重复的对象错误模式可能会持续不止一次,具体取决于重新抛出异常的次数。要从上面获取详细信息,我需要:
error.xpath('/error/object/error/object/error').item(0).getAttribute('description');
我永远不会期望超过 2 或 3 次重新抛出,但我不想编写讨厌的代码来尝试捕获 4 个不同级别。
我读过“last()”并尝试过
(//元素[@name='error'])[last()]但我认为我的语法错误,因为它返回未定义。
有没有一种简单的方法可以始终在这种重复的 XML 树中获取“错误”元素的最后一个(最深的)实例?
我只想读取 XML 中的数据,不需要翻译或更改任何内容。
非常感谢!
解决方案
您可以使用 XML Spear 从 xml 复制 X 路径。这可以让你开始。
推荐阅读
- python - 使用 ajax 将数据发布到 django 视图不起作用
- c++ - 用于 c++ 插件的 node.js 结构序列化
- node.js - 使用 Webpack 的 Express 应用程序的文件和文件夹结构
- node.js - 使用heroku托管的Angular Universal服务器端的请求超时
- ms-access - Splitform不更新文本框/标签
- c++ - 巴斯卡拉罪功能
- firebase - 为什么即使在使用 NPM 安装后 Firebase 也会抛出错误?
- python - 使用 SymPy 查找高斯整数中的最大公约数 (GCD)
- ios - 更改表格视图中显示文本的颜色
- c - 从用户那里获取字符串:将不需要的单词放入数组的问题