如何使用Woodstox StAX 2在XML中序列化/反序列化类
作者:互联网
我几乎试图归档,在Java中用how-to-serialize-deserialize-simple-classes-to-xml-and-back(C#)做了什么.如果可能的话,我想避免为每个类编写序列化/反序列化方法.
例如,序列化的一部分:
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的方式.以下内容将帮助您入门:
> http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted
JAXB实现
该标准有几种实现方式:
> EclipseLink MOXy(我是技术主管)
> Metro(参考实现,包含在Java SE 6中)
> JaxMe
Woodstox StAX 2
JAXB接受许多输入/输出格式,包括StAX.
验证
使用Unmarshaller将XML转换为对象,并使用Marshaller将对象转换为XML.您可以设置javax.xml.validation.Schema的实例以在这些操作期间验证输入.
您还可以直接使用JAXB使用javax.xml.validation API,请查看以下示例:
> Checking a java value with an xml schema
XSLT
Java中使用javax.xml.transform库来执行XSLT转换. JAXB旨在使用JAXBSource和JAXBResult来处理这些库.
欲获得更多信息
看看我的博客:
> http://bdoughan.blogspot.com
标签:java,xml,xml-serialization,stax,woodstox 来源: https://codeday.me/bug/20190626/1298188.html