首页 > 解决方案 > 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 中的数据,不需要翻译或更改任何内容。

非常感谢!

标签: javascriptxpathelement

解决方案


您可以使用 XML Spear 从 xml 复制 X 路径。这可以让你开始。

您可以在http://www.donkeydevelopment.com找到免费软件


推荐阅读