在 Java 中,我们经常使用 JAXB2。Object<->XML 映射在 Java 类中被定义为注解:
@XmlRootElement(name="usertask", namespace="urn:test")
public class UserTask
{
@XmlElement(namespace="urn:test")
public String getAssignee() { ... }
public void setAssignee(String assignee) { ... }
}
JAXB 运行时可以读取这些注释并创建解组器以将 XML 解析为对象实例或将对象编组为 XML。
JAXB 提供了一个模式编译器 (XJC),它可以从 XML 模式生成带注释的类,这是另一个很棒的特性。
最近我们一直在使用客户端 JavaScript。我们还需要在那里进行 XML 处理。例如,我们需要像这样解析 WPS 文档。这些文档还符合不同的 XML 模式(这里是示例 XML的 WPS 1.0.0 模式)。使用 JavaScript 对象而不是 XML 会很棒,这样可以节省大量的精力。在某些情况下,我们可以使用基于 JSON 的解决方案,例如DWR,但在许多情况下,我们必须在客户端处理 XML。
我的问题是:
是否有一些用于 JavaScript 的 JAXB 模拟?
一些工具可以将 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()
})
}
]
});
这应该足以构建 unmarshaller 或 marshaller。