XML解析器要点

1、  所有元素都要正确被关闭,空元素另外处理

2、  标签之间不得交叉

3、  所有属性都得包上引号

4、  元素,属性名大小写区分

5、  CDATA

<![CDATA[

        所要写的文字

                      第二行

]]>

解析器设置

使用 DocumentBuilder 创建解析器的优点之一在于能够控制 DocumentBuilderFactory 创建的解析器上的各种设置。例如,可以设置解析器验证文档:

...

try {

         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        

         dbf.setValidating(true);

        

         DocumentBuilder db = dbf.newDocumentBuilder();

         doc = db.parse(docFile);

      } catch (Exception e) {

...

Java DOM Level 2 实现允许通过以下方法控制解析器的参数:

  • setCoalescing()决定解析器是否要将 CDATA 节点转换为文本,以及是否要和周围的文本节点合并(如果适用的话)。其默认值为 false
  • setExpandEntityReferences() 确定是否要展开外部实体引用。如果为 true,外部数据将插入文档。其默认值为 true
  • setIgnoringComments()确定是否要忽略文件中的注释。其默认值为 false
  • setIgnoringElementContentWhitespace()确定是否要忽略元素内容中的空白(类似于浏览器对待 HTML 的方式)。其默认值为 false
  • setNamespaceAware()确定解析器是否要注意名称空间信息。其默认值为 false
  • setValidating()默认情况下,解析器不验证文档。将这个参数设置为 true 可打开验证功能。

解析器异常

由于在创建解析器时存在所有这些可能性,其中许多地方都可能会出错。正如这里的例子所表明的,应用程序把所有这些内容转储到一个单一的通用 Exception 中,就调试而言,这样可能不是很有帮助。

为更好地查明问题,您可以捕捉与创建和使用解析器的各方面相关的特定异常:

...
   
   
      try {
   
   
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   
   
         DocumentBuilder db = dbf.newDocumentBuilder();
   
   
         doc = db.parse(docFile);
   
   
      } catch (javax.xml.parsers.ParserConfigurationException pce) {
    
    
         System.out.println("The parser was not configured correctly.");
    
    
         System.exit(1);
    
    
      } catch (java.io.IOException ie) {
    
    
         System.out.println("Cannot read input file.");
    
    
         System.exit(1);
    
    
      } catch (org.xml.sax.SAXException se) {
    
    
         System.out.println("Problem parsing the file.");
    
    
         System.exit(1);
    
    
      } catch (java.lang.IllegalArgumentException ae) {
    
    
         System.out.println("Please specify an XML source.");
    
    
         System.exit(1);
    
    

   
   
    
     
   
   
      }
   
   
...
  
  

一旦解析器已创建了一个 Document,应用程序就能单步调试它以检查数据

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值