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 声明引起的。我将从检查这两件事开始。