Let's say I want to parse the phone number from an an xml string like this:
str = """ <root>
<address>123 New York, NY 10019
<div class="phone"> (212) 212-0001</div>
</address>
</root>
"""
parser = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser()).parseText (str)
println parser.address.div.text()
It doesn't print the phone number.
If I change the "div" element to "foo" like this
str = """ <root>
<address>123 New York, NY 10019
<foo class="phone"> (212) 212-0001</foo>
</address>
</root>
"""
parser = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser()).parseText (str)
println parser.address.foo.text()
Then its able to parse and print the phone number.
What the heck is going on?
Btw I am using groovy 1.7.5 and tagsoup 1.2
Just change code to
This is curse of Groovy and many other dynamic language - "div" is reserved method name thus you don't get node but rather try to divide "address" node :)