2

XML 示例:

<structure-node (n)>
    <node-data (1)>
        <feature-list (n)>
            <feature (n)>
                <value (1)>123</value>
            </feature>
        </feature-list>
    </node-data>
</structure-node>

括号中为最大出现次数。我想获得一个结构节点,但仅限于包含值等于 123 的地方。

我试过这个(玩!用Scala):

@{ (parentNode \ "structure-node").filter{ f => (f \ "node-data" \ "feature-list" \ "feature" \ "value").text == "123"}  }

但似乎我无法过滤节点本身不存在的字段。我必须组合过滤器吗?我试过了,但失败了...

任何想法?

4

1 回答 1

2

您可以使用函数 exists 在“结构节点”标签下的“值”标签的 SeqNode 上添加条件:

(parentNode \ "structure-node").filter(s => (s \ "node-data" \ "feature-list" \ "feature" \ "value").exists ( t => t.text == "123"))

或者

(parentNode \ "structure-node").filter(s => (s \\ "value").exists ( t => t.text == "123"))
于 2012-08-10T16:17:28.313 回答