楼主: fry_2006

sax解析xml文档

[复制链接]
论坛徽章:
0
31#
 楼主| 发表于 2008-11-25 16:29 | 只看该作者

回复 #29 hongjinusa 的帖子

我可能没说清楚,我再详细得说一下,你再帮帮我考虑一下。
我就是要在ReportingContentHandler类得startElement()事件中调用 DataItemFilter类得startElement()事件的stack栈及其栈里面存放的值。
程序是这样执行得:首先是包含主函数类SAXDemo类--------->主函数里执行DataItemFilter类,执行到DataItemFilter类里得startElement()事件的时候进行数据处理:(1)把结果保存在stack栈里;(2)然后进行条件判断,条件成立时,调用ReportingContentHandler类得startElement()事件,进一步对数据处理,处理得时候要用到前一个类DataItemFilter类得stack栈里得元素。
就是在调用得时候栈里是空的

使用道具 举报

回复
论坛徽章:
1
2009新春纪念徽章
日期:2009-01-04 14:52:28
32#
发表于 2008-11-25 23:40 | 只看该作者
对不起,是我错了,因为没在IDE写,在这里写的,写完后也没好好检查。改成如下

public class DataItemFilter extends XMLFilterImpl {
    private YourDfaStack dfaStack = null; //  stack to push, 要传送到 ReportingContentHandler 去
    public void startElement(String namespaceURI, String localName, String qName, Attributes attributes) throws SAXException
        {
                if(dfaStack == null)
                   dfaStack = new YourDfaStack()

                System.out.println(qName+"元素开始");
               
                dfaStack.push(dver);//把DFA的起始顶点压入栈中,这个顶点是存在的
                     System.out.println(dfaStack.peek());//能够取出刚才压入得元素,说明栈里确实压入了这个元素。
        }
   public YourDfaStack getYourDfaStack (){ return dfaStack ; }
}                     

public class ReportingContentHandler implements ContentHandler{
    private YourDfaStack dfaStack  = null; // stack to peek, 从 DataItemFilter 传来
    public void startElement(String namespaceURI, String localName, String qName, Attributes attributes) throws SAXException
        {
                      System.out.println(qName+"元素开始");

                      if(dfaStack  != null)
                           dfaStack .peek(dver);// 取出在DataItemFilter 压入的值
         }

    public void set setYourDfaStack (YourDfaStack  stack){ dfaStack  = stack; }
}



DataItemFilter item = new DataItemFilter (); // 初始化 YourDfaStack  dfaStack  
item.startElement(.......); // 把 值压入 dfaStack  

ReportingContentHandler  report = new  ReportingContentHandler ()
// 初始化 YourDfaStack  dfaStack  

report.setYourDfaStack (item.getYourDfaStack ());  
// 把 DataItemFilter 里的 YourDfaStack  传给 ReportingContentHandler

report.sartElement(.......); // 取出 YourDfaStack  的值

要实在还不行,把你的代码送到我的Email里,说明是什么地方错了。可能别的对方还有问题,点我的名就可以看到我的email。

[ 本帖最后由 hongjinusa 于 2008-11-25 11:08 编辑 ]

使用道具 举报

回复
论坛徽章:
0
33#
 楼主| 发表于 2008-11-28 21:51 | 只看该作者

回复 #32 hongjinusa 的帖子

这段时间真是麻烦你了。要看得是一个完整的程序。这个不能上传附件吧。你的邮箱是什么,我给你发过去,你帮我看看,真的太感谢你了。

使用道具 举报

回复
论坛徽章:
1
2009新春纪念徽章
日期:2009-01-04 14:52:28
34#
发表于 2008-11-28 23:51 | 只看该作者
点我的名字就可以看到,来邮件时,请说明是什么错,并把错误信息发来,最好是在代码中标明何处出错。等我回国时别忘了请我吃饭。哈。

使用道具 举报

回复
论坛徽章:
1
2009新春纪念徽章
日期:2009-01-04 14:52:28
35#
发表于 2008-12-2 02:55 | 只看该作者
liuqing112 也要请我吃饭?嘿嘿,谢了先。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表