新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → DOM教程系列四(将XML文件解析为文档)-----来源:IBM developerWorks 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4646 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: DOM教程系列四(将XML文件解析为文档)-----来源:IBM developerWorks 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     yuji1998 帅哥哟,离线,有人找我吗?魔羯座1981-12-22
      
      
      威望:5
      头衔:蓝色先锋
      等级:大二(研究C++)
      文章:212
      积分:1059
      门派:XML.ORG.CN
      注册:2004/4/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yuji1998发送一个短消息 把yuji1998加入好友 查看yuji1998的个人资料 搜索yuji1998在『 DOM/SAX/XPath 』的所有贴子 访问yuji1998的主页 引用回复这个贴子 回复这个贴子 查看yuji1998的博客楼主
    发贴心情 DOM教程系列四(将XML文件解析为文档)-----来源:IBM developerWorks

    欢迎您通过电子邮件 nicholas@nicholaschase.com直接与作者  Nicholas Chase 联系。
    注:本教程仅供本站成员的学习和研究使用,严禁用于商业目的!

                                                        三步过程
          为了使用 XML 文件中的信息,必须解析文件以创建一个 Document 对象。
    Document 对象是一个接口,因而不能直接将它实例化;一般情况下,应用程序会相应使用一个工厂。准确的过程因实现而异,但是基本思想是相同的。(同样,Level 3 标准化了这个任务。)在这个例子 Java 环境中,解析文件是一个三步过程:
          1.创建 DocumentBuilderFactory。 DocumentBuilderFactory 对象创建 DocumentBuilder。
          2.创建 DocumentBuilder。 DocumentBuilder 执行实际的解析以创建 Document 对象。
          3.解析文件以创建 Document 对象。
    现在您可以开始构建应用程序了。
                                             基本的应用程序
    首先创建一个基本的应用程序,即一个名为 OrderProcessor 的类。
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import java.io.File;
    import org.w3c.dom.Document;

    public class OrderProcessor {
       public static void main (String args[]) {
          File docFile = new File("orders.xml");
          Document doc = null;      
          try {

           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
           DocumentBuilder db = dbf.newDocumentBuilder();
           doc = db.parse(docFile);

          } catch (Exception e) {
             System.out.print("Problem parsing the file: "+e.getMessage());
          }
       }
    }
          首先,Java 代码导入必要的类,然后它创建 OrderProcessor 应用程序。本教程中的例子仅处理一个文件,因此为简洁起见,应用程序包含了对该文件的直接引用。
    因此 Document 对象可以在以后使用,应用程序把它定义在 try-catch 块之外。
    在 try-catch 块中,应用程序创建了 DocumentBuilderFactory,然后再使用它来创建 DocumentBuilder。 最后,DocumentBuilder 解析文件以创建 Document。
                                                解析器设置
    使用 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)
      




    ----------------------------------------------
    私人网站:蓝尚WEB商务平台http://www.lanshang.com     建站黄页:http://www.lanshang.com/link.asp WEB技术文库:http://www.lanshang.com/wenzhang/ 
    电子书籍: http://www.lanshang.com/ebook/  技术交流:http://www.lanshang.com/bbs/

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/5/29 19:05:00
     
     GoogleAdSense魔羯座1981-12-22
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/2 2:51:06

    本主题贴数1,分页: [1]

     *树形目录 (最近20个回帖) 顶端 
    主题:  DOM教程系列四(将XML文件解析为文档)-----来源:IBM developerWo..(4227字) - yuji1998,2004年5月29日

    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    8,408.203ms