如何使用sax解析包含用户注释的xml文件

时间:2014-03-27 14:15:44

标签: java xml saxparser

我正在使用sax来解析一个xml文件并且它可以正常工作但是它只能在我感兴趣的标签之间进行部分解析

     try {

            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            DefaultHandler handler = new DefaultHandler() {
                boolean bcomm = false;

                @Override
                public void startElement(String uri, String localName,String qName, 
                    Attributes attributes) throws SAXException {
                        if (qName.equalsIgnoreCase("COMMENT")) {
                        bcomm = true;
                        }                           
        }

                public void characters(char ch[], int start, int length) throws SAXException {
                    if (bcomm) {                        
                        review = new String(ch, start, length) + "\n";                        
                        bcomm = false;
                    }
                }
            };

这是我得到的一些输出:

为我的青少年提供出色的保护

我在2002年购买了第一代Windows XP平板电脑,它在手写笔和写作方面表现非常出色:我做了大量笔记并经常使用电子培训

这是一个很棒的产品。它

但我希望得到:

为我青少年的Kindle提供出色的保护。

我在2002年购买了第一代Windows XP平板电脑,它在手写笔和写作方面表现非常出色:我做了大量笔记并经常进行培训,在计算机上使用电子“白板”是一个优势,因为我创建的文档可以立即分享。 4年前,当这台机器出现故障时,我开始从Windows Vista / 7,iPad#1/2/3 gen#,Android中搜索它的替代品...没有任何支持手写,易用笔,速度和能力的组合到目前为止,轻松共享创建的文档。与Office 2013一样,Windows 8在Surface Pro中非常流行。操作系统和应用程序都利用Surface RT上的处理能力和额外内存。在OneNote中记笔记是一件轻而易举的事 - 捕捉我写的内容没有任何滞后或波动,而且再次提供完整的Outlook客户端非常棒。我有兴趣看看重量如何随着时间的推移而发挥 - 但与我2002年的混合动力或我公司给我的“精英”2012笔记本电脑的砖相比,这件事情很轻松。为了便于使用Windows 8,我也给了它4 - 虽然我已经使用Windows 8超过一年,但它在触摸设备上肯定是一个更好的体验,与iOS / Android平板电脑相比,它仍然缺乏轻松。至于原生Windows应用程序与iOS相比 - 我经常在iOS上使用的应用程序只有2个不在Windows 8 #History Channel Civil War和Hay Day#;如果不是那些,我的iPad 3将退休给孩子们。

这是一个很棒的产品。这就像有一个内置的3个案例,因为这个产品附带了两个额外的颜色编码带。我非常喜欢这个产品

我认为它与标点字符有关...请帮忙???

1 个答案:

答案 0 :(得分:0)

将char数据存储到在method之外声明的缓冲区。

StringBuilder buffer = new StringBuilder();

public void characters(char ch[], int start, int length) throws SAXException {
//   if (bcomm) {   
       buffer.append(new String(ch, start, length));
       bcomm = false;
//   }
}