Groovy XMLParser 和 XMLSlurper
Groovy XMLParser & XMLSlurper
我正在进行 groovy xml 练习,根据问题,我需要编写 2 个方法:
readFileContent(fileName) - 此方法用于从文件(xml 文件)和return 该文件的内容中读取内容作为字符串。
loadStudents(xmlString) - 此方法用于使用参数化的 xml 字符串生成学生列表(请解析 xml 字符串(使用 xml Slurper) 并创建学生对象并添加到 studentList)。
我尝试使用 xmlparser.parse(fileName) 创建我的 xmlString,然后在 loadStudent 方法中使用 xmlSlurper.parseText。但是,获取内容不允许延长错误。
这是我的代码:
def xmlString = new XmlParser().parse(fileName)
def students = new XmlSlurper().parseText(xmlString)
这里是xml:
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student>
<id>1</id>
<registerNumber>1225</registerNumber>
<name>Madison</name>
</student>
<student>
<id>3</id>
<registerNumber>4152</registerNumber>
<name>Paul</name>
</student>
<student>
<id>5</id>
<registerNumber>1785</registerNumber>
<name>Sam</name>
</student>
<student>
<id>2</id>
<registerNumber>4158</registerNumber>
<name>Jason</name>
</student>
<student>
<id>4</id>
<registerNumber>1674</registerNumber>
<name>Harry</name>
</student>
</students>
注意:我知道我可以直接在 xmlSlurper 中解析文件,它工作正常。但是,这是在线练习,需要使用这两种方法来完成。
提前致谢。
以下代码:
def data = readFileContent('data.xml')
def students = loadStudents(data)
students.each { s ->
println "${s.name} -> ${s.number}"
}
class Student {
def name
def number
}
String readFileContent(fileName) {
new File(fileName).text
}
def loadStudents(xmlString) {
def parser = new XmlSlurper()
parser.parseText(xmlString).student.collect { s ->
new Student(name: s.name, number: s.registerNumber)
}
}
将打印:
Madison -> 1225
Paul -> 4152
Sam -> 1785
Jason -> 4158
Harry -> 1674
when 运行 on the xml in your example.
您遇到的错误很可能是由 xml 文件开头的额外字符引起的。有时这也可能是由于解析器不允许在文件开头使用 xml 声明引起的。我将从检查这两件事开始。
我正在进行 groovy xml 练习,根据问题,我需要编写 2 个方法:
readFileContent(fileName) - 此方法用于从文件(xml 文件)和return 该文件的内容中读取内容作为字符串。
loadStudents(xmlString) - 此方法用于使用参数化的 xml 字符串生成学生列表(请解析 xml 字符串(使用 xml Slurper) 并创建学生对象并添加到 studentList)。
我尝试使用 xmlparser.parse(fileName) 创建我的 xmlString,然后在 loadStudent 方法中使用 xmlSlurper.parseText。但是,获取内容不允许延长错误。
这是我的代码:
def xmlString = new XmlParser().parse(fileName)
def students = new XmlSlurper().parseText(xmlString)
这里是xml:
<?xml version="1.0" encoding="UTF-8" ?>
<students>
<student>
<id>1</id>
<registerNumber>1225</registerNumber>
<name>Madison</name>
</student>
<student>
<id>3</id>
<registerNumber>4152</registerNumber>
<name>Paul</name>
</student>
<student>
<id>5</id>
<registerNumber>1785</registerNumber>
<name>Sam</name>
</student>
<student>
<id>2</id>
<registerNumber>4158</registerNumber>
<name>Jason</name>
</student>
<student>
<id>4</id>
<registerNumber>1674</registerNumber>
<name>Harry</name>
</student>
</students>
注意:我知道我可以直接在 xmlSlurper 中解析文件,它工作正常。但是,这是在线练习,需要使用这两种方法来完成。
提前致谢。
以下代码:
def data = readFileContent('data.xml')
def students = loadStudents(data)
students.each { s ->
println "${s.name} -> ${s.number}"
}
class Student {
def name
def number
}
String readFileContent(fileName) {
new File(fileName).text
}
def loadStudents(xmlString) {
def parser = new XmlSlurper()
parser.parseText(xmlString).student.collect { s ->
new Student(name: s.name, number: s.registerNumber)
}
}
将打印:
Madison -> 1225
Paul -> 4152
Sam -> 1785
Jason -> 4158
Harry -> 1674
when 运行 on the xml in your example.
您遇到的错误很可能是由 xml 文件开头的额外字符引起的。有时这也可能是由于解析器不允许在文件开头使用 xml 声明引起的。我将从检查这两件事开始。