gpt4 book ai didi

groovy - 使用 XmlSlurper 和 findAll 的嵌套 GPath 表达式

转载 作者:行者123 更新时间:2023-12-04 03:34:25 25 4
gpt4 key购买 nike

我正在尝试使用 XmlSlurper 和 GPath 分析 XML 树,findAll 方法的行为让我感到困惑。

例如,假设您有以下 XML 树:

<html>
<body>
<ul>
<li class="odd"><span>Element 1</span></li>
<li class="even"><span>Element 2</span></li>
<li class="odd"><span>Element 3</span></li>
<li class="even"><span>Element 4</span></li>
<li class="odd"><span>Element 5</span></li>
</ul>
</body>
</html>

假设 xml 已通过 XmlSlurperparse 方法之一初始化,以下代码将按预期执行:

// Prints:
// odd
// odd
// odd
xml.body.ul.li.findAll {it.@class == 'odd'}.@class.each {println it.text()}

另一方面:

// Doesn't print anything.
xml.body.ul.li.findAll {it.@class == 'odd'}.span.each {println it.text()}

我很难理解为什么我可以使用特殊的 @ 属性(以及其他属性,例如 **),但不能使用“普通”属性。

我查看了 API 代码,更让我困惑的是 getProperty 实现(在 GPathResult 中找到)似乎支持我正在尝试的做。

我错过了什么?

最佳答案

您需要遍历每个 span,因此您可以使用散点运算符:

xml.body.ul.li.findAll {it.@class == 'odd'}*.span.each {println it.text()}

关于groovy - 使用 XmlSlurper 和 findAll 的嵌套 GPath 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com