栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用sax跳过节点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用sax跳过节点

您可以执行以下操作:

import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.XMLReader;public class Demo {    public static void main(String[] args) throws Exception {        SAXParserFactory spf = SAXParserFactory.newInstance();        SAXParser sp = spf.newSAXParser();        XMLReader xr = sp.getXMLReader();        xr.setContentHandler(new MyContentHandler(xr));        xr.parse("input.xml");    }}

MyContentHandler

此类负责处理您的XML文档。击中要忽略的节点时,可以在IgnoringContentHandler中进行交换,这将吞噬该节点的所有事件。

import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;public class MyContentHandler extends DefaultHandler {    private XMLReader xmlReader;    public MyContentHandler(XMLReader xmlReader) {        this.xmlReader = xmlReader;    }    public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {        if ("sodium".equals(qName)) { xmlReader.setContentHandler(new IgnoringContentHandler(xmlReader,         this));        } else { System.out.println("START " + qName);        }    }    public void endElement(String uri, String localName, String qName) throws SAXException {        System.out.println("END " + qName);    }    public void characters(char[] ch, int start, int length) throws SAXException {        System.out.println(new String(ch, start, length));    }}

忽略ContentHandler

当IgnoringContentHandler完成吞咽事件后,它将控制权传递回您的主ContentHandler。

import org.xml.sax.Attributes;import org.xml.sax.ContentHandler;import org.xml.sax.SAXException;import org.xml.sax.XMLReader;import org.xml.sax.helpers.DefaultHandler;public class IgnoringContentHandler extends DefaultHandler {    private int depth = 1;    private XMLReader xmlReader;    private ContentHandler contentHandler;    public IgnoringContentHandler(XMLReader xmlReader, ContentHandler contentHandler) {        this.contentHandler = contentHandler;        this.xmlReader = xmlReader;    }    public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {        depth++;    }    public void endElement(String uri, String localName, String qName) throws SAXException {        depth--;        if(0 == depth) {xmlReader.setContentHandler(contentHandler);        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号