Если вам нужно разобрать много книг, вы можете перебирать теги <book>
в своем XML. Например:
import groovy.transform.Canonical
@Canonical
class Book {
String title, author
}
def text = """
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
</book>
<book id="bk102">
<author>Orwell, George</author>
<title>1984</title>
</book>
<book id="bk103">
<author>Huxley, Aldous</author>
<title>Brave New World</title>
</book>
</catalog>
"""
def catalog = new XmlParser().parseText(text)
def books = catalog.book.collect {
new Book(title: it.title.text(), author: it.author.text())
}
println books
... выходы [Book(XML Developer's Guide, Gambardella, Matthew), Book(1984, Orwell, George), Book(Brave New World, Huxley, Aldous)]
Обратите внимание, что я использую преобразование @Canonical
, но это просто бесплатный метод toString()
:)
Обновление : Извините, я не заметил, что класс Book находится на Java. Я полагаю, вы не можете коснуться этого. Но, тем не менее, вы можете разобрать этот xml с помощью:
def catalog = new XmlParser().parseText(text)
def books = catalog.book.collect {
def b = new Book()
b.setAuthor(it.author.text())
b.setTitle(it.title.text())
b
}