zoukankan      html  css  js  c++  java
  • 04---XML编程整理

    一、XML概述

     
        XML(eXtensible Markup Language),可扩展标记语言,
     
        被设计的宗旨是传输数据,而非显示数据
     
        W3C发布的,目前遵循1.0规范
     
        XML标签没有被预定义,需要用户自行定义标签
     
        XML是一种通用的数据交换格式,需要Parser(解析器)来执行或显示
     
        通常用于软件的配置文件,来提高灵活性
     
    二、XML语法
     
       1、文档的组成
     
           ·文档声明
               
                     <?xml version="1.0" encoding="UTF-8"?>
     
                     必须出现在文档的第一行,默认编码为utf-8,
     
                     standalone属性说明文档是否独立,即是否依赖其他文件
     
           ·元素
     
                  标签不允许交叉嵌套
     
                  一个XML文档必须有且仅有一个根标签
     
                  XML中不会忽略主体内容中出现的空格和换行
     
                  严格区分大小写
     
                  只能以字母或下划线开头,不能以xml开头
     
                  字符之间不能有空格、制表符、不能使用冒号
     
           ·元素属性
     
                  一个元素可以有多个属性,但不允许重复,
     
                  属性值必须放在引号中,单双都可以
     
                  在某些场合,如需要传输尽可能小的文件时,可以把子元素写成属性方式,节省空间
     
           ·注释
     
                  <!-- 注释内容-->、 注释不能嵌套,会提前匹配到结束
     
           ·CDATA区
     
                  是Character Data的缩写,不会被解析器解析的文本
     
                  <![CDATA[  包含标签的内容  ]]>
     
           ·特殊字符
                    
                    
                  
     
           ·处理指令(PI:Processing Instruction)
     
                   即第一行声明的语句,告诉软件如何解析XML文档
     
    三、XML约束
     
              XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确的获取
     
          文件中的内容而报错(如Tomcat,网易新闻客户端例子)
     
              XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档成为约束
     
              格式良好的XML:遵循XML语法的XML
     
              有效的XML:遵循约束文档的XML
     
              总之,约束文档定义了在XML中允许出现的元素名称、属性及元素出现的顺序等
     
          
        常用的约束技术:
     
            ·XML DTD
     
                 DTD(Document Type Definition):文档类型定义,用于约束XML书写规范
     
                 
                  编程校验XML文档的正确性
     
                  以下为JavaScript代码
     
                        //创建XML文档解析器对象
     
                        var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
     
                       //开启xml校验器
     
                        xmldoc.validateOnParse = "true";
     
                       //装载xml文档
     
                        xmldoc.load("book.xml");
     
                       //获取错误信息
     
                       var reason = xmldoc.parseError.reason;
     
                       var lineNum = xmldoc.parseError.line;
     
                       document.write("reason:"+reason+",lineNum"+lineNum);
     
                     DTD语法、用的时候查一下手册吧
     
            ·XML Schema
                   
                                XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。
     
                      XML Schema 可针对未来的需求扩展
     
                      XML Schema 支持数据类型
     
                      XML Schema 支持命名空间
     
                       
            ·XDR  比较少用
     
            ·SOX  比较少用
     
    四、XML解析
     
         使用Java解析XML分两种方式:DOM方式和SAX方式
     
         ·DOM:文档对象模型,是W3C推荐的处理XML的一种方式
     
         ·SAX:Simple API for XML,是比较流行的开源社区XML-DEV,几乎所有解析器都支持
     
         XML解析开发包:
     
             ·JAXP:SUN公司推出的解析标准实现
     
                     Java API for XML Processing。开发包是JavaSe的组成部分
     
                     包含: org.w3c.com:提供DOM方式解析XML的标准接口
     
                            org.xml.sax:提供SAX方式解析XML的标准接口
     
                            Javax.xml:提供了解析XML文档的类
     
                     
                   
     
                 DocumentBuilderFactory dbf = DDocumentBuilderFactory.newInstance();
     
                 DocumentBuilder db = dbf.newDocumentBuilder();
     
                 Document doc = db.parse("xxx.xml");
     
                 //执行增删改查操作
     
     
                TransformerFactory tsf = TransformerFactory.newInstance();
     
                Transformer tsTransformer = tsf.newTransformer();
     
                tsTransformer.transform(new DOMSource(doc),
     
                                        new StreamResult("xxx.xml"));
     
                    
                      SAX方式:
                         

                                                    使用SAXParserFactory创建SAX解析工厂

                                                    XParserFactory spf = SAXParserFactory.newInstance();

                                                    通过SAX解析工厂得到解析器对象

                                                    XParser sp = spf.newSAXParser();

                                                   通过解析器对象得到一个XML的读取器

                                                   LReader xmlReader = sp.getXMLReader();

                                                  设置读取器的事件处理器

                                                  lReader.setContentHandler(new BookParserHandler());

                                                  解析xml文件

                                                  lReader.parse("book.xml");

                                  
             ·DOM4J:开源组织推出的解析开发包
     
                                      由早期开发JDOM的人分离出去而独立开发的一个简单、灵活的开放源代码库
     
                      一款非常优秀的Java XML API,需要下载jar包
                   
                      //获取document对象
             
                      SAXReader reader = new SAXReader();
                      Document document = reader.read(url);
     
                      //制定编码的写回方式
     
                      OutputFormat format = OutputFormat.createPrettyPrint();                  
                      format.setEncoding("GBK");       
                      MLWriter writer = new XMLWriter(new FileOutputStream("output.xml"),format);
                      writer.write(document);
                      writer.close(); 
     
                   支持XPath:
     
                    XPath 使用路径表达式来选取 XML 文档中的节点或者节点集
     
             ·JDom:开源组织推出的解析开发包(目前比较不流行)
     
     
            
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/rocomp/p/4748787.html
Copyright © 2011-2022 走看看