返回信息流我用jaxb将一个java对象转为xml文件(代码如下),如何能够将这个对象生成的xml直接存储在一个string类型的变量中呢,不经过本地存储。
JAXBContext context = JAXBContext.newInstance(Alert.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING,"utf-8");//编码格式
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);//是否格式化生成的xml串
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);//是否省略xml头信息
marshaller.marshal(alert, new File("E:\\out.xml"));
真诚求教呀。
另外请教的是:web service服务可以直接返回一个xml文档吗?怎么返回呢?客户端要如何解析呢?
这是一条镜像帖。来源:北邮人论坛 / java / #22187同步于 2012/4/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【求教】如何将一个java对象转换成的xml文件存储在字符串中
laughing
2012/4/20镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
xml实质上就是文本,只不过是带结构的格式化的文本,不论是存储还是传输,写成xml格式后按普通文本处理就是了。。
至于生成和解析的方法有很多,网上随便搜一大堆,挑个合适的就行
【 在 laughing (哈哈) 的大作中提到: 】
: 我用jaxb将一个java对象转为xml文件(代码如下),如何能够将这个对象生成的xml直接存储在一个string类型的变量中呢,不经过本地存储。
: JAXBContext context = JAXBContext.newInstance(Alert.class);
: Marshaller marshaller = context.createMarshaller();
: ...................
哦,我目前的处理方法就是从文件中再读出来,就这样:
FileInputStream inputstream = new FileInputStream("E:\\out.xml");
StringBuffer buffer = new StringBuffer();
String line; // 用来保存每行读取的内容
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(new FileInputStream("E:\\out.xml")));
line = bufferreader.readLine(); // 读取第一行
while (line != null) { // 如果 line 为空说明读完了
buffer.append(line); // 将读到的内容添加到 buffer 中
buffer.append("\n"); // 添加换行符
line = bufferreader.readLine(); // 读取下一行
}
// 将读到 buffer 中的内容写出来
inputstream.close();
String filetext = buffer.toString();
System.out.println(filetext);
在本地打印没有问题,但是给他封装成webservice之后客户端调用得到的字符串,打出来就是乱码了,很苦恼
【 在 lastword 的大作中提到: 】
: xml实质上就是文本,只不过是带结构的格式化的文本,不论是存储还是传输,写成xml格式后按普通文本处理就是了。。
: 至于生成和解析的方法有很多,网上随便搜一大堆,挑个合适的就行
marshaller.marshal(alert, new File("E:\\out.xml")); 这个方法,有个是marshal(alert,Writer writer)格式的,后面用StringWriter,然后stringWriter.toString就行了,得到的就是String的xml字符串
是吗,我试试哈,膜拜大牛哈
【 在 aiquestion 的大作中提到: 】
: marshaller.marshal(alert, new File("E:\\out.xml")); 这个方法,有个是marshal(alert,Writer writer)格式的,后面用StringWriter,然后stringWriter.toString就行了,得到的就是String的xml字符串
问题解决啦,谢谢谢谢
【 在 aiquestion 的大作中提到: 】
: marshaller.marshal(alert, new File("E:\\out.xml")); 这个方法,有个是marshal(alert,Writer writer)格式的,后面用StringWriter,然后stringWriter.toString就行了,得到的就是String的xml字符串