如何在grails中读取xml文件?
我对grails非常陌生,也许这是我问的最简单的问题。 我正在创建一个非常简单的自学应用程序,其中创建了一个登录页面。成功登录后,应读取xml文件并显示输出。任何人都可以用一个例子来说明这一点。另外,请告诉xml文件的文件夹位置是什么?下面是我的代码: UserController.groovy如何在grails中读取xml文件?,grails,grails-domain-class,grails-controller,Grails,Grails Domain Class,Grails Controller,我对grails非常陌生,也许这是我问的最简单的问题。 我正在创建一个非常简单的自学应用程序,其中创建了一个登录页面。成功登录后,应读取xml文件并显示输出。任何人都可以用一个例子来说明这一点。另外,请告诉xml文件的文件夹位置是什么?下面是我的代码: UserController.groovy class UserController { def index = { } def login = { def user = User.findWhere(user
class UserController {
def index = { }
def login = {
def user = User.findWhere(username:params['username'],
password:params['password'])
session.user = user
if (user) {
redirect(action:display)
}
else {
redirect(url:"http://localhost:8080/simple-login/")
}
}
def display = {
def stream = getClass().classLoader.getResourceAsStream("grails-app/conf/sample.xml")
return [data: XML.parse(stream)]
}
}
class UrlMappings {
static mappings = {
"/user/login" (controller: "user" ,action: "login")
"/user/display"(controller:"user" ,action:"display")
"/"(view:"/index")
"500"(view:'/error')
}
}
myxml.gsp
<html>
<body>
<p>Please find the details below:</p>
<p>${data}</p>
</body>
</html>
现在我已经将index.gsp作为用户登录时显示的第一个页面,是否可以在URLMappings中指定多个视图?同样正如其中一个回复中所建议的,如果我必须定义一个名为“myxml”的操作并指向诸如“/controller”/myxml之类的url,那会在哪里?请帮忙 这是一个快速示例 控制器
def index = {
def stream = getClass().classLoader.getResourceAsStream("grails-app/conf/my-file.xml")
return [data: XML.parse(stream)]
}
查看(index.gsp)
...
${data}
在这里,我将xml文件放在webapp/xmls/
目录下,并解析abc.xml
文件
def parse ( ) {
// Getting context path here
def webRootDir = sch.servletContext.getRealPath ("/")
// Create a new file instance
def f = new File (webRootDir + "/xmls/" + "abc.xml")
// Parxing XML file here
def items = new XmlParser ( ).parseText( f.text )
// iterating through XML blocks here
items.question.each {
// Creating domain class object to save in DB
def question = new Question ( )
def node = it
question.with {
qtext = node.qtext.text()
answer = node.answer.text()
if (!hasErrors() && save(flush: true)) {
log.info "mcq saved successfully"
} else
errors.allErrors.each {
err->
log.error err.getField() + ": "
log.error err.getRejectedValue() + ": " + err.code
}
}
}
}
这是示例XML(abc.XML)文件:
字母表的第一个字母是?
A.
字母表的第二个字母是?
A.
.
.
.
.
希望这会有所帮助。只需创建一个动作myxml和一个视图myxml.gsp,然后转到url/“controller”/myxml1。XML.parse()只接受字符串或HttpServletRequest,例如您想要的XML.parse(stream,“UTF-8”)或任何您正在使用的编码。2.如果my-file.xml位于“grails app/conf”目录中,则只需要.getResourceAsStream(“my-file.xml”)
def parse ( ) {
// Getting context path here
def webRootDir = sch.servletContext.getRealPath ("/")
// Create a new file instance
def f = new File (webRootDir + "/xmls/" + "abc.xml")
// Parxing XML file here
def items = new XmlParser ( ).parseText( f.text )
// iterating through XML blocks here
items.question.each {
// Creating domain class object to save in DB
def question = new Question ( )
def node = it
question.with {
qtext = node.qtext.text()
answer = node.answer.text()
if (!hasErrors() && save(flush: true)) {
log.info "mcq saved successfully"
} else
errors.allErrors.each {
err->
log.error err.getField() + ": "
log.error err.getRejectedValue() + ": " + err.code
}
}
}
}
<qns>
<question id="q1">
<qtext> First letter of alphabet is?</qtext>
<answer>A<answer>
</question>
<question id="q2">
<qtext> Second letter of alphabet is?</qtext>
<answer>A<answer>
</question>
.
.
.
.
</qns>