我正在尝试找到一种方法来获取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()'并尝试过
(//element[@name='error'])[last()],但我认为我得到了错误的语法,因为它返回的是不确定的。
是否存在一种简单的方法来始终获取这种重复XML树中“错误”元素的最后(最深)实例?
我只想读取XML中的数据,不需要翻译或更改任何内容。
非常感谢!