Java 如何使用Woodstox StAX 2序列化/反序列化XML中的类
我正在尝试用Java来归档(C#)中所做的工作。如果可能,我希望避免为每个类编写序列化/反序列化方法 例如,序列化的一部分:Java 如何使用Woodstox StAX 2序列化/反序列化XML中的类,java,xml,xml-serialization,stax,woodstox,Java,Xml,Xml Serialization,Stax,Woodstox,我正在尝试用Java来归档(C#)中所做的工作。如果可能,我希望避免为每个类编写序列化/反序列化方法 例如,序列化的一部分: XMLOutputFactory xof = null; XMLStreamWriter2 writer = null; try { resp.setContentType("text/plain"); xof = XMLOutputFactory.newInstance(); writer = (
XMLOutputFactory xof = null;
XMLStreamWriter2 writer = null;
try {
resp.setContentType("text/plain");
xof = XMLOutputFactory.newInstance();
writer = (XMLStreamWriter2) //
xof.createXMLStreamWriter(resp.getOutputStream());
writer.writeStartDocument("1.0");
writer.writeStartElement("data");
//
// Magic happens here.
//
writer.writeEndElement();
writer.writeEndDocument();
} catch (XMLStreamException e) {
e.printStackTrace();
resp.sendError(1, "Problem 1 occured.");
} finally {
try {
writer.flush();
writer.close();
} catch (XMLStreamException e) {
e.printStackTrace();
resp.sendError(2, "Problem 2 occured.");
}
}
这不是问题的一部分,因为我正试图一个接一个地解决问题,但可能会让你感觉到我在努力做什么。当我反序列化时,我还想检查输入是否有效。最后,我想使用XSLT转换和序列化形式。JAXB是将Java对象序列化为XML的方法。以下内容将帮助您开始:
- (我是技术负责人)
- (参考实现,包含在JavaSE6中)
另外:还有一个名为(Jackson JSON处理器的衍生产品)的新项目,它使用Stax2解析器(如Woodstox或Aalto)实现“迷你JAXB”(完整JAXB功能的子集)。主要好处是数据绑定部分功能更强,甚至比JAXB实现的性能更好;缺点是它不够成熟,并且不支持所有特定于XML的方面。在支持JSON和XML格式的情况下,它可能最有用。您在这方面的知识非常丰富。感谢Margus,我已经领导XML绑定解决方案好几年了(EclipseLink MOXy)。我也是两个Java相关标准的积极成员:JAXB()和SDO()。我强烈建议您使用Java标准解决方案,因为它可以更好地与企业Java堆栈的其余部分集成。例如,JAXB是JAX-WS(XMLWeb服务)和JAX-RS(RESTfulWeb服务)的标准绑定层。如果您需要其他信息,请告诉我。@BlaiseDoughan如您所述,在使用JAXB解组时,如何设置模式实例以根据DTD验证整个xml,而不涉及创建验证程序以进行验证和分析的两个步骤?任何关于这方面的建议都会很有帮助