当前位置: 技术问答>java相关
怎样在xerces 的 DOMParser之后输出XML的字符串形式??
来源: 互联网 发布时间:2015-05-24
本文导语: 都说xerces的DOM解析速度很快,但是我解析一个文档后如: String msg=""; StringReader is = new StringReader(message); InputSource in = new InputSource(is); DOMParser docParser = new DOMParser(); docParser.parse(in); Document document=docParser.getDoc...
都说xerces的DOM解析速度很快,但是我解析一个文档后如:
String msg="";
StringReader is = new StringReader(message);
InputSource in = new InputSource(is);
DOMParser docParser = new DOMParser();
docParser.parse(in);
Document document=docParser.getDocument();
System.out.println("-------------------------------------------");
Element element=(Element)document.getFirstChild();
System.out.println("the content is:");
System.out.println(element.toString());
System.out.println("-------------------------------------------");
输出的是:
-----------------------------------------
the content is:
[auther: null]
-----------------------------------------
但是,我用javax.xml.parser的解析器解析出来的输出是:
-----------------------------------------
the content is:
-----------------------------------------
如果说我想用xerces的解析器(得到高的速度),又想能通过document或element对象取得XML的字符串形式(第二个输出那种),我该怎么办?
String msg="";
StringReader is = new StringReader(message);
InputSource in = new InputSource(is);
DOMParser docParser = new DOMParser();
docParser.parse(in);
Document document=docParser.getDocument();
System.out.println("-------------------------------------------");
Element element=(Element)document.getFirstChild();
System.out.println("the content is:");
System.out.println(element.toString());
System.out.println("-------------------------------------------");
输出的是:
-----------------------------------------
the content is:
[auther: null]
-----------------------------------------
但是,我用javax.xml.parser的解析器解析出来的输出是:
-----------------------------------------
the content is:
-----------------------------------------
如果说我想用xerces的解析器(得到高的速度),又想能通过document或element对象取得XML的字符串形式(第二个输出那种),我该怎么办?
|
Xerces中Element的toString()形式就是那样的
如果想得到你预期的结果,你必须使用getNodeName()、getNodeValue()自己拼。或者干脆覆盖它的toString()方法。
如果想得到你预期的结果,你必须使用getNodeName()、getNodeValue()自己拼。或者干脆覆盖它的toString()方法。
|
其实,你可以用JAXP来解析,新的JAXP内核使用的缺省解析器就是Xerces。
String uri = "file:" + new File( name ).getAbsolutePath();
// 使用JAXP作为解析器
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document document = db.parse( uri );
String uri = "file:" + new File( name ).getAbsolutePath();
// 使用JAXP作为解析器
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document document = db.parse( uri );
|
xerces的DOM ,sax解析速度一點都不快.還不如直接用jaxp寫呢
|
不需要,JDK1.4自带JAXP
|
到jdom.org下载
|
应该是解析的过程,虽然创建新对象耗时也挺长,但是对一个文档进行分析,其间不知要新建多少个对象,而且还有可能涉及到磁盘读写,很耗时的。
|
不客气:)
|
JDOM为Java程序员提供了很多方便,不过还在发展阶段,如果你没有什么特殊的要求,可以选用它。
|
对JAXP就是javax.xml.parsers
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。