Fork me on GitHub

Working with XML

Ninja提供了开箱即用的支持,可将任意Java对象呈现为XML以及将XML解析为Java对象.

Rendering XML

考虑这个简单的模型类:

package models;

public class Person {       
    String name;
}    

而这个控制器:

package controllers;

public class ApplicationController {       

    public Result index() {

        Person person = new Person();
        person.name = "John Johnson";

        return Results.xml().render(person);

    }
}

该控制器将产生格式良好的XML输出:

<Person><name>John Johnson</name></Person>

Parsing XML

如果要解析传入的XML请求,只需要将映射POJO添加到控制器方法签名中.

考虑以下XML:

<Person><name>John Johnson</name></Person>

此Xml映射到以下Java pojo:

package models;

public class Person {       
    String name;
}    

如果通过HTTP正文将该XML发送到应用程序,则只需将POJO类添加到控制器方法中,Ninja将为您处理传入的XML:

package controllers;

public class ApplicationController {       

    public Result parsePerson(Person person) {
        
        String nameOfPerson = person.name; // will be John Johnson
        ...

    }
}

Advanced XML usage

忍者在后台使用Jackson( http://wiki.fasterxml.com/JacksonHome ). Jackson是Java生态系统中使用最广泛的XML序列化程序之一.

如果要自定义Jackson的工作方式,可以通过将XmlMapper注入启动动作并对其进行修改来实现.

@Singleton
public class MyXmlMapper {

    @Inject 
    XmlMapper xmlMapper;

    @Start(order = 90)
    public void configureXmlMapper() {
        // Adding Joda Time parsing and rendering support to Jackson
        xmlMapper.registerModule(new JodaModule());     
    }
}

XmlMapper是单例,可以由您的应用程序修改和扩展.

在实际使用XmlMapper之前修改它是安全的,但是在用于解析或生成XML之后修改XmlMapper并不是线程安全的.

有关Jackson模块的更多信息: http : //wiki.fasterxml.com/JacksonFeatureModules


by  ICOPY.SITE