jaxb到XML文档
我需要将JavaBeans打包到org.w3c.dom.Elementjaxb到XML文档,jaxb,marshalling,Jaxb,Marshalling,我需要将JavaBeans打包到org.w3c.dom.Element 我可以马歇尔到输出流,但不能马歇尔到XML文档。 我编写了以下测试代码: JAXBContext context = JAXBContext.newInstance(String.class); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE)
我可以马歇尔到输出流,但不能马歇尔到XML文档。
我编写了以下测试代码:
JAXBContext context = JAXBContext.newInstance(String.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
String xmlRootName = "rootTag";
JAXBElement jaxbElement = new JAXBElement(new QName("", xmlRootName), String.class, "foo bar");
Element element;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
m.marshal(jaxbElement, doc);
System.out.println("Document: " + doc);
element = doc.createElement(xmlRootName);
m.marshal(jaxbElement, element);
System.out.println("Element1: " + element);
DOMResult res = new DOMResult();
m.marshal(jaxbElement, res);
element = ((Document)res.getNode()).getDocumentElement();
System.out.println("Element2: " + element);
StringWriter writer = new StringWriter();
m.marshal(jaxbElement, writer);
System.out.println("Writer: " + writer);
输出为:
Document: [#document: null]
Element1: [rootTag: null]
Element2: [rootTag: null]
Writer: <rootTag>foo bar</rootTag>
Document:[#Document:null]
Element1:[根标记:null]
Element2:[根标记:null]
作者:福巴
看起来编组只对输出流有效。如何转换为xml文档?我做错了什么?您正在正确编组对象。要记录结果,需要使用
javax.xml.transform
API。使用System.out.println
得到的结果只是在DOM节点上调用toString
的结果,该节点可以返回任何内容
Java模型
Foo
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
公开课Foo{
私人弦杆;
公共字符串getBar(){
返回杆;
}
公共空心立根杆(弦杆){
这个.bar=bar;
}
}
演示代码
演示
import javax.xml.bind.*;
导入javax.xml.parsers.*;
导入javax.xml.transform.*;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult;
导入org.w3c.dom.*;
公开课演示{
公共静态void main(字符串[]args)引发异常{
JAXBContext jc=JAXBContext.newInstance(Foo.class);
//构建域对象
Foo-Foo=新的Foo();
foo.setBar(“你好,世界”);
//创建文档
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document Document=db.newDocument();
//封送对象到文档
Marshaller=jc.createMarshaller();
元帅(foo,文件);
//对生成的文档执行操作
NodeList elements=document.getElementsByTagName(“bar”);
对于(int x=0;x