読者です 読者をやめる 読者になる 読者になる

Groovyイン・アクション訂正

dev groovy

Groovyイン・アクションで翻訳時のミスがありましたので、訂正しておきます。
P.355 表12.4の上から2行が

Node(XmlParser) GPathResult(XmlSlurper) 意味
['elementName'] [.elementName] 指定した名前を持つすべての子要素
'elementName' .elementName (同上)

となっていますが、正しくは

Node(XmlParser) GPathResult(XmlSlurper) 意味
['elementName'] ['elementName'] 指定した名前を持つすべての子要素
.elementName .elementName (同上)

となります。
XmlParserを使っても、XmlSlurperを使っても、子要素へのアクセス方法には差はありません。
そのほかの修正については、正誤表 http://groups.google.co.jp/group/gina-ja-support/web/%E6%AD%A3%E8%AA%A4%E8%A1%A8?hl=ja をご確認下さい。
参考までに、確認用のコードサンプルものせておきますね。

import groovy.util.slurpersupport.GPathResult
import groovy.util.Node

def s = """
<root>
  <child name='c1'/>
  <child name='c2'/>
  <child name='c3'/>
</root>"""

def parser = new XmlParser().parseText(s)
// Node access: by []
parser['child'].each{ assert (it instanceof Node) && it.name()=='child'}
// Node access: byproperty
parser.'child'.each{ assert (it instanceof Node) && it.name()=='child'}

def slurper = new XmlSlurper().parseText(s)
// GPath access: by []
slurper['child'].each{ assert (it instanceof GPathResult) && it.name()=='child' }
// GPath access: by property
slurper.'child'.each{ assert (it instanceof GPathResult) && it.name()=='child' }