好吧,我有一个看起来像这样的 xml 文档:
<xml>
<list>
<partner>
<name>Some Name</name>
<status>active</status>
<id>0</id>
</partner>
<partner>
<name>Another Name</name>
<status>active</status>
<id>1</id>
</partner>
</list>
</xml>
我正在使用 ruby 的 lib-xml 来解析它。我想以一种快速而惯用的方式来查找是否有一个名为“Some Name”的合作伙伴。
假设我在一个名为 document.. 的变量中解析了一个文档,我该如何在一行或 ruby 代码中做到这一点。这样我就可以调用 document.find(xpath) 来检索节点。我不得不在略有不同的情况下多次这样做,现在它开始困扰我。
我知道我可以做以下事情(但它很难看)
found = false
document.find('//partner/name').each do |name|
if (name.content == 'Some Name')
found = true
break
end
end
assert(found, "Some Name should have been found")
但我觉得这真的很难看。我想过使用枚举包括?mixin 方法,但这仍然行不通,因为我需要获取每个节点的 .content 字段而不是实际节点......在写这个时,我想到了这个(但它似乎有点低效,尽管很优雅)
found = document.find('//partner/name').collect{|name| name.content}.member?("Some Name")
有没有其他方法可以做到这一点?