是否有用于XML绑定的JavaScript API - 类似于JAXB for Java?

lex*_*ore 17 javascript xml dwr jaxb jsonix

在Java中,我们使用JAXB2进行了大量工作.对象< - > XML映射在Java类中定义为注释:

@XmlRootElement(name="usertask", namespace="urn:test")
public class UserTask
{
    @XmlElement(namespace="urn:test")
    public String getAssignee() { ... }

    public void setAssignee(String assignee) { ... }
}
Run Code Online (Sandbox Code Playgroud)

JAXB运行时可以读取这些注释并创建unmarshaller以将XML解析为对象实例或将对象编组为XML.

JAXB提供了一个模式编译器(XJC),它可以从XML模式生成带注释的类,这是另一个很棒的特性.


最近我们一直在使用客户端JavaScript进行大量工作.我们还需要XML处理.例如,我们需要像这样解析WPS文档.这些文档也符合不同的XML模式(这里是示例XML 的WPS 1.0.0模式).使用JavaScript对象而不是XML会很棒,这可以节省大量的工作量.在某些情况下,我们可以使用基于JSON的解决方案,如DWR,但在许多情况下,我们必须在客户端处理XML.

我的问题是:

是否有一些JAXB for JavaScript的模拟?

一些工具可以将XML Schema编译成一些XML < - >对象映射并提供运行时来在XML和JavaScript对象之间进行转换?

我可以很容易地想象以下形式生成的映射:

UserTask = new JSXML.XmlRootElement({
  name: "usertask",
  namespace: "urn:test",
  properties: [
    {
      assignee: new JSXML.XmlElement({
        name: "assignee",
        namespace: "urn:test",
        type: new JSXML.XSD.String()
      })
    }
  ]
});
Run Code Online (Sandbox Code Playgroud)

这应该足以构建unmarshaller或marshaller.

lex*_*ore 27

到目前为止,我没有发现任何类似于我需要的东西.因此我决定自己实施它.这是项目页面:

http://confluence.highsource.org/display/MISC/Jsonix

该项目托管在GitHub上:

https://github.com/highsource/jsonix/


小智 0

JAXB 对 JSON 的支持怎么样?重用当前的 JAXB 带注释的模型类,但从 REST 端点输出 JSON。

Jersey当前版本通过JSONJAXBContext支持此功能(通过jersey-json模块)。

您还可以尝试JacksonJAXBJAX-RS支持。