Java SAX 解析

DOM 解析参考:Java DOM 解析

 

# 无 Validation

 


SAXParserFactory fact = SAXParserFactory.newInstance(); fact.setNamespaceAware(true); SAXParser parser = fact.newSAXParser(); XMLReader reader = parser.getXMLReader(); ContentHandler handler = ...; ErrorHandler errorHandler = ...; reader.setContentHandler(handler); reader.setErrorHandler(errorHandler); URL url = ...; reader.parse(url.toString());

 

o 主要API:

    - javax.xml.parsers.SAXParserFactory

    - javax.xml.parsers.SAXParser

    - org.xml.sax.XMLReader

    - org.xml.sax.ContentHandler

    - org.xml.sax.ErrorHandler

    - org.xml.sax.DefaultHandler: 实现了 ContentHandler 和 ErrorHandler 接口

 

o ContentHandler

主要的方法

    - startDocument

    - endDocument

    - startElement

    - characters

 

文本(包括空白)、CDATA 都会以 characters() 通知

文本中的 Entity会被替换,如 &lt;替换为 <

 

o ErrorHandler

ErrorHandler 接口定义了3个回掉方法:

    - warning:警告,但合法

    - error:Validation 失败时

    - fatalError:XML 不是 well formed

warning()/error() 只在启用了 Validation 时才会发生

3个方法都可以抛出 SaxException。如果抛出 SaxException 则 SAX 解析过程终止

 

# DTD Validation

要启用 DTD Validation,调用

SAXParserFactory.setValidating(true);

解析器会根据XML文档中 DOCTYPE 声明中的 URI 去加载 DTD。如果 DTD文件找不到,SaxParser.parse() 会抛出 IOException

如果解析的XML来自 InputStream,可以使用 SaxParser.parse(InputSource),其参数类型 InputSource 可包装一个 InputStream

通过以下方法对其进行设置:

    - setSystemId():设置 DOCTYPE SYSTEM URI,对应 <!DOCTYPE root-element SYSTEM "URI">

    - setPublicId():设置 DOCTYPE PUBLIC URI,对应 <!DOCTYPE root-element PUBLIC "name" "URI">

    - setEncoding()

 

 

 

 

 

 

转载于:https://www.cnblogs.com/jackofhearts/p/java_xml_sax.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值