Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—使用JAXB API从JAXBElement获取XML内容_Java_Xml_Jaxb_Jaxbelement - Fatal编程技术网

Java—使用JAXB API从JAXBElement获取XML内容

Java—使用JAXB API从JAXBElement获取XML内容,java,xml,jaxb,jaxbelement,Java,Xml,Jaxb,Jaxbelement,我有下面的代码,它使用JAXB API将医院数据保存到XML文件中,工作正常,但我想在保存之前将XML内容从元素(JAXBElement的实例)转换为字符串对象,而无需再次读取该文件,如何在几行代码中实现这一点 Wrapper hopitaux=new Wrapper(); setElements(getListe()); BufferedWriter writer=新的BufferedWriter(新文件编写器(hfile)); JAXBContext context=JAXBContext.

我有下面的代码,它使用JAXB API将医院数据保存到XML文件中,工作正常,但我想在保存之前将XML内容从
元素
JAXBElement
的实例)转换为
字符串
对象,而无需再次读取该文件,如何在几行代码中实现这一点

Wrapper hopitaux=new Wrapper();
setElements(getListe());
BufferedWriter writer=新的BufferedWriter(新文件编写器(hfile));
JAXBContext context=JAXBContext.newInstance(Wrapper.class、Hopital.class、Service.class、Medecin.class);
JAXBElement元素=新的JAXBElement(新的QName(“hopitaux”),Wrapper.class,hopitaux);
Marshaller m=context.createMarshaller();
m、 setProperty(Marshaller.JAXB_编码,“iso-8859-15”);
m、 setProperty(Marshaller.JAXB_格式化的_输出,true);
m、 元帅(元素、系统、输出);
m、 元帅(要素、作者);
writer.close();

将其封送到
StringWriter
以捕获字符串中的输出。不过,我认为,您必须将编码从
封送器
移动到将字符串写入文件的位置

StringWriter stringWriter = new StringWriter();
m.marshal(element, stringWriter);
String content = stringWriter.toString();
try (BufferedWriter writer = Files.newBufferedWriter(hfile, 
        Charset.forName("ISO-8859-15"))) {
    writer.write(content);
}
(假设
hfile
路径
,否则根据需要使用
Path.get(hfile)
hfile.toPath()