一、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:开源组织推出的解析开发包(目前比较不流行)
 
 
        

04---XML编程整理的更多相关文章

  1. C++的XML编程经验――LIBXML2库使用指南[转]

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  2. C++的XML编程经验――LIBXML2库使用指南

    C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML ...

  3. LINQ to XML 编程基础

    1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: 隐藏行号 复制代码 ?创建 XML public static void CreateDocumen ...

  4. 【风马一族_xml】xml编程

    xml编程:利用java程序支增删改查(CRUD)XML中的数据 解析思想: dom解析 sax解析 基于这两种解析思想市面上就有了很多的解析api sun jaxp (比较弱)既有dom方式也有sa ...

  5. XML编程

     XML编程 XML及其语法 XML约束之DTD XML编程(CRUD---Create Read Update Delete) XML约束之Schema XML语法: XML文档的组成: 一个X ...

  6. 实训任务04 MapReduce编程入门

    实训任务04 MapReduce编程入门 1.实训1:画图mapReduce处理过程 使用有短句“A friend in need is a friend in deed”,画出使用MapReduce ...

  7. 【二十八】xml编程(dom\xpath\simplexml)

    1.xml基础概念 作用范围: 作为程序通讯的标准. 作为配置文件. 作为小型数据库. xml语法: <根标签> <标签 元素="元素值" ...>< ...

  8. 【Windows】windows核心编程整理(下)

    windows核心编程整理(上) windows核心编程整理(下) 线程的堆栈 每当创建一个线程时,系统就会为线程的堆栈(每个线程有他自己的堆栈)保留一个堆栈空间区域,并将一些物理存储器提交给这个以保 ...

  9. 【Windows】windows核心编程整理(上)

    小续 这是我11年看<windows核心编程>时所作的一些笔记,现整理出来共享给大家 windows核心编程整理(上) windows核心编程整理(下) 线程的基础知识 进程是不活泼的,进 ...

  10. PHP 自学之路-----XML编程(Dom技术)

    上一节,讲了Xml文件基本语法及元素,实体及Dtd约束技术,下面就正式进入PHP的Xml编程 使用PHP技术对Xml文件进行操作 常用的有以下三种技术: 1.PHP dom 2.PHP结合XPath操 ...

随机推荐

  1. storm - 使用过程中的一点思考

    引子 这几天为了优化原有的数据处理框架,比较系统的学习了storm的一些内容,整理一下心得 1. storm提供的是一种数据处理思想,它不提供具体的解决方案 storm的核心是topo的定义,而top ...

  2. C# DateDiff与DateAdd

    原文地址:http://www.wlm.so/Article/Detail/lmb49q5hxpqyi00000 刚刚在百度上搜C#里面的DateDiff,一看吓一跳,C#没有这个函数. 还有各种自定 ...

  3. Nhibernate与Dapper对比,及Nhibernate增删改和9种查询语法

    1,Sql语法. NH:HQL Dapper:原生Sql. 点评:原生Sql可以直接放在数据库里执行,Hql不行,且Hql增加学习负担.(Hn也可以原生Sql,但好像用的不多呀) 2,开发速度. NH ...

  4. SGU 390-Tickets(数位dp)

    题意:有标号l-r的票,要给路人发,当给的票的编号的各数位的总和(可能一个人多张票)不小k时,才开始发给下一个人,求能发多少人. 分析:这个题挺难想的,参考了一下题解,dp[i][sum][left] ...

  5. HDU2859 Phalanx 简单DP

    dp[i][j]代表以s[i][j]字符为右上角的最大对称方阵的尺寸 最左边那一列都为1,然后按列更新,代码实现比较简单,感觉有点卡时间,如果对称度很好,时间应该比较高,我只会这种了 #include ...

  6. as3+java+mysql(mybatis) 数据自动工具(五)

    现在介绍常量的配置,主要用于客户端(as3)与服务端(java)之间的常量同步,比如错误码.请求标识等 配置格式: <macros name="Macros" groupSt ...

  7. Android UI -- 的基础知识。

    在介绍基础知识之前先明确几个基本的概念 View 视图是所有可视组件的基类,所有的UI控件包括布局类都是从View派生出来的. ViewGroup ViewGroup是View的扩展,可以放置多个Vi ...

  8. 用Python操作Excel2007 及以上的版本读写,来自官方的Demo

    大牛请略过,新手可以参考,具体见下面的代码注释, 另外一个问题,想学习这个语言,最好还是英语牛一些,可以去官网多看看有用的类库,汉语的资料不是很全 #运行环境 3.4,下面这个操作Excel的包是针对 ...

  9. vi常用命令与设置(不断修改中)

    注:前缀':'表示vim命令(命令模式),前缀'$'表示为shell命令,表示Ctrl + W,表示Ctrl + Shift+ 6,无前缀者均为普通模式下的键盘按键.基本的插入与修改:         ...

  10. jdk源码调试功能

    JDK源码重新编译——支持eclipse调试JDK源码--转载 最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt. ...