如何将xml文件的内容写在一个String里,在接析???????????急

hexiaofeng 2002-10-28 09:56:50
如何将xml文件的内容写在一个String里,在接析???????????急
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
njyyao 2002-10-28
  • 打赏
  • 举报
回复
java.io.PrintWriter out = response.getWriter();


TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING,"gb2312");
StreamResult result = new StreamResult(out);
transformer.transform(new DOMSource(document),result);
String tmp = out.toString();

这就是string了。
wangwenyou 2002-10-28
  • 打赏
  • 举报
回复
客气:)
wangwenyou 2002-10-28
  • 打赏
  • 举报
回复
异常信息是什么?
有可能两个原因
1、=" <?改为="<? 。PI前别有空格;
2、尽量使用'代替\"。
hexiaofeng 2002-10-28
  • 打赏
  • 举报
回复
谢谢 wangwenyou(王文友) 很感谢。。。。。。。。。。。
hexiaofeng 2002-10-28
  • 打赏
  • 举报
回复
wangwenyou(王文友) :

public void doxml(){

try{
//获取一个XML解析器
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
//解析XML文件
//Document document=builder.parse(new File("books.xml"));
String tmp =" <?xml version=\"1.0\" encoding=\"UTF-8\"?><catalog><book id=\"bk101\"><author>Gambardella, Matthew</author><title>XML Developer's Guide</title><publish_date><year>2000</year><month>10</month><day>1</day></publish_date><description>An in-depth look at creating applications with XML.</description></book></catalog>";
InputStream in = new StringBufferInputStream(tmp);
System.out.println("sdfsdf");
Document document=builder.parse(in);
//去掉XML文档中空白部分
document.normalize();
System.out.println("sdfsdfAA");
//获取根节点并打印根节点的名称
Element root=document.getDocumentElement();
System.out.println("根原始的名称:"+root.getTagName());
//获取所有的"book"标记,它是一个NodeList对象
NodeList books=root.getElementsByTagName("book");
//遍历NodeList
System.out.println("书本列表");
for(int i=0;i<books.getLength();i++){
//获取books中的每一个元素
Element book=(Element)books.item(i);
//获取每个"book"标记的"id"属性
String book_id=book.getAttribute("id");//或book.getAttributeNode("id").getValue();
System.out.println("序号:"+book_id);
//获取"book"标记下的每个元素
System.out.print("作者:");
System.out.println(book.getElementsByTagName("author").item(0).getFirstChild().getNodeValue());
System.out.print("标题:");
System.out.println(book.getElementsByTagName("title").item(0).getFirstChild().getNodeValue());
//获取"publish_date"元素
Element publishDate=(Element)book.getElementsByTagName("publish_date").item(0);
//获取"publish_date"元素下的每个子元素
String year=publishDate.getElementsByTagName("year").item(0).getFirstChild().getNodeValue();
String month=publishDate.getElementsByTagName("month").item(0).getFirstChild().getNodeValue();
String day=publishDate.getElementsByTagName("day").item(0).getFirstChild().getNodeValue();
System.out.println("出版日期:"+year+"年"+month+"月"+day+"日");
System.out.print("描述:");
System.out.println(book.getElementsByTagName("description").item(0).getFirstChild().getNodeValue());
System.out.println("--------------------");
}
}
catch(Exception e2){
e2.printStackTrace();
}
}

出错???
chrischen79 2002-10-28
  • 打赏
  • 举报
回复
楼上的回答反了吧。

我自己的static方法,如何得到Document就看楼主的了。我使用的是apache的xerces

import org.apache.xml.serialize.*;
import org.w3c.dom.*;
import org.apache.xerces.dom.*;
import java.io.*;
import java.util.*;

//放在什么地方自己看着办
public static String documentToString(org.w3c.dom.Document xmldoc){
try{
java.io.StringWriter o = new StringWriter();
OutputFormat of = new OutputFormat();
XMLSerializer serializer = new XMLSerializer(o,of);
serializer.asDOMSerializer();
serializer.serialize( xmldoc.getDocumentElement() );

return o.toString();
}
catch(IOException ioe){
ioe.printStackTrace();
return null;
}
}
wangwenyou 2002-10-28
  • 打赏
  • 举报
回复
InputStream in = new StringBufferInputStream( inString );
javax.xml.parsers.DocumentBuilder db = _documentBuilderFactory.newDocumentBuilder();
org.w3c.dom.Document document = db.parse( in );

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧