当前位置:  技术问答>java相关

问一个Sax的问题

    来源: 互联网  发布时间:2017-04-19

    本文导语:  看了ccidnet上关于sax的文章 http://developer.ccidnet.com/pub/disp/Article?columnID=295&articleID=9587&pageNO=1 用他的代码,就是最下边那一段用堆栈实现的方法,但是发现一个问题 1.startElement吓endElement中都应该是操作p2吧,比如 public vo...

看了ccidnet上关于sax的文章
http://developer.ccidnet.com/pub/disp/Article?columnID=295&articleID=9587&pageNO=1
用他的代码,就是最下边那一段用堆栈实现的方法,但是发现一个问题
1.startElement吓endElement中都应该是操作p2吧,比如
public void startElement(String p0, String p1, String p2, Attributes p3) throws SAXException {
tags.push(p1);
}
应该改为
public void startElement(String p0, String p1, String p2, Attributes p3) throws SAXException {
tags.push(p2);
}

2.
public void characters(char[] p0, int p1, int p2) throws SAXException {
//从栈中得到当前节点的信息
String tag=(String) tags.peek();
if (tag.equals("text")) text=new String(p0,p1,p2);
else if (tag.equals("url")) url=new String(p0,p1,p2);
else if (tag.equals("author")) author=new String(p0,p1,p2);
else if (tag.equals("day")) day=new String(p0,p1,p2);
else if (tag.equals("month")) month=new String(p0,p1,p2);
else if (tag.equals("year")) year=new String(p0,p1,p2);
else if (tag.equals("description")) year=new String(p0,p1,p2);
}
怎么得到的都是null呀,哪位能帮个忙呀

|
问题出现在下面这句中:
xmlReader.parse(new File(filename),new SAXCounter());
把它改成:
xmlReader.parse(new File(filename),this);
你的代码就不会再有问题了,原因是引用了不同实例的问题。

|
1)this 放哪里了?不new实例,直接用是不可以的!如果你这里的概念不太清楚的话我建议你用另外一个类调用这个解析类。

2)如果这么声明,你应该知道了那几个String的意思了(你自己最好打印出来看看):
public void startElement(
String namespaceURI,
String localName,
String rawName,
Attributes attrs)
throws SAXException {}

3)我没有你所有的SOURCE CODE,时间原因不再给你细分析,以下是我们工程中用到的解析代码段:
//完成对xmlString的解析工作
private void parser(String xmlString) throws WebException {

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = null;
XMLReader reader = null;
try {
// 创建一个SAXParser解析器对象
saxParser = spf.newSAXParser();
reader = saxParser.getXMLReader();

} catch (Exception ex) {
LogHelper log =
new LogHelper("com.XXXXXXXXXXXXXXXX.class");
log.log(getEnvHead(), 300004, ex.getMessage());
if (GlobalNames.DEBUG_OUTPUT_FLAG) {
System.err.println(ex);
}
throw new WebException("sax parser load error");
}
try {

StringReader sr = new StringReader(xmlString);
//注册handler,并进行解析

saxParser.parse(new org.xml.sax.InputSource(sr), this);

} catch (Exception ioe) {
LogHelper log =
new LogHelper("com.XXXXXXXXXXXX.class");
log.log(getEnvHead(), 300006, ioe.getMessage());
if (GlobalNames.DEBUG_OUTPUT_FLAG) {
System.err.println(ioe);
}
throw new WebException("IO error");
}
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.xml.transform.sax接口templateshandler成员方法: gettemplates定义参考
  • SAX模式的XML解析器 fasterxml
  • java命名空间javax.xml.transform.sax类saxtransformerfactory成员方法: newtemplateshandler定义参考
  • 用SAX怎么样检查XML的正确性?
  • java命名空间javax.xml.transform.sax类saxsource成员方法: getinputsource定义参考
  • 使用标准SAX解析XML文档如何获取文档编码信息及约束它的dtd文件路径.
  • java命名空间javax.xml.transform.sax类saxtransformerfactory成员方法: newtransformerhandler定义参考
  • 两篇非常好的关于xml的sax和dom的文档。
  • java命名空间javax.xml.transform.sax类saxresult成员方法: getlexicalhandler定义参考
  • 我刚开始学习java+xml编程,但是我怎么也找不到sun的sax包,请各位帮帮忙!
  • java命名空间javax.xml.transform.sax类saxsource成员方法: setinputsource定义参考
  • 请问在JBuilder7中,如何引入javax.xml.parsers.*;org.xml.sax.*;org.w3c.dom.*;
  • java命名空间javax.xml.transform.sax类saxsource成员方法: saxsource定义参考
  • 征求SAX、DOM、JAXP等关于JAVA & XML的资料(近5000可用分欲送出,来要分吧!NO.1)
  • java命名空间javax.xml.transform.sax类saxresult成员方法: saxresult定义参考
  • 征求SAX、DOM、JAXP等关于JAVA & XML的资料(近5000可用分欲送出,来要分吧!NO.2)
  • java命名空间javax.xml.transform.sax类saxsource成员方法: sourcetoinputsource定义参考
  • java解析xml之sax解析xml示例分享
  • java命名空间javax.xml.transform.sax类saxresult成员方法: setlexicalhandler定义参考
  • java中使用sax解析xml的解决方法
  • java命名空间javax.xml.transform.sax类saxresult成员方法: gethandler定义参考
  • Android中使用sax解析xml文件的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3