XML

来源:互联网 发布:电子书语音阅读软件 编辑:程序博客网 时间:2024/06/03 19:59
XML的概述:
   可扩展的标记语言,自定义的标签, 作用:  传输数据,存取数据,软件的配置文件; 


XML的使用:
  1.文档声明: 在XML的第一行第一列  <?xml 属性名="属性值".... ?>


      属性:  varsion :必须定义  版本号 1.0;   
             encoding: 字符集,使用浏览器打开采用的默认编码
             standalone: 描述XML文档是否依赖其他的文件. no需要引入其他文件


  2.xml的元素名称规范:可以自定义,就是标签; 名称不能包含冒号(:)


  3.属性的命名规范和2相同, 必须使用引号 ""


  4.特殊符号 < &lg;


  5.xml的CDATA区:(字符数据)里面所有数据都当做字符串  <![CDATA[ 内容 ]]>


  6.区分大小写,必须有关闭标签.






xml的解析: 通过代码获得


    1.xml的解析方式: 不同公司提供了不同的API的实现


           DOM解析: 一次性加载到内存,在内存中形成树结构
         
                  缺点:文档大,容易造成内存溢出
                  优点: 对xml进行增删改的操作


           SAX解析: 事件驱动的方式,逐行进行解析:


                  缺点:不能xml进行增删改的
                  优点: 操作文档大,不会造成内存溢出


        JAXP: sun公司提供的


        JDOM: 开源组织   DOM4J:开源的组织 *   




    整个文档叫做document   节点标签 element  属性 attribute    文本 text  整个节点 node


1. DOM4J 解析xml文件;
   1.导入jar包
   2.创建解析器:  saxreader s = new saxreader();


   3.解析文档 :     document d = s.read("xml/demo1.xml");
   4.获取根节点 :       element e = d.getrootelement();




   注意:只能用上一个节点的Element来使用element方法来获取下一个


   5.从根节点往下查找其他节点     
         4.element("sb")  找第一个s元素
         4.elements("sb").get(1); 找第二个元素;
   
   6.获得文本内容 :      5.getText();






2. DOM4J 的 XPath: 两个//不管哪一层都能找到 /*所有  /bbb[1] 第一个  //person[@id='id']找属性 


     dom4j的xPath支持的API;
    List document.selectNodes(Stirng xpath);  Node document.selectSingleNode(String xPath);;




   1.导入dom4j支持xpath的jar包     jaxen-1,beta


   2.  3.  4.document.selectNodes(随便哪个标签,根据上面//写法); 
   5. 4.attributevalue("port");
  


  创建节点
   1. documentHelper.createDocument()
   2. documentHelper.createelement()
   3.  1.add(2);   
   4.  2.addattribute("","");


   生成xml文件
   5. outputformat new  ("   ",true);
      xmlwriter  new  ();
       xmlwriter.write(1);
      






xml的约束:
  
   xml的约束的概述: 约束xml文档中可以出现哪个标签,标签的顺序,次数
                   
   约束的种类和区别: 
       1.DTD: 语法自成一体


       2.schema:语法就是xml的与语法,所以更容易被解析器解析,支持名称空间
                有比DTD更加强大的语义和语法的约束






  1. DTD的语法:  引入的方式: 
              1内部的DTD      <!DOCTYPE persons[]>
              2外部的DTD: ( 本地的DTD system  网络的DTD public //UNKNOWN)


       元素:
         <!element 元素名称 类别>  类别: EMPTY空   ANY任意的  子元素(是否有序:使用逗号代表有         序的或者竖线| 出现次数? +)  PCDAT 文本内容




       属性<!ATTLIST 所属标签 属性名称  属性的类别 属性的约束>
          属性类别:   ID类型: 表示属性的值唯一  CDATA类型: 普通的字符串  枚举
          属性约束: REQUIRED必须出现 IMPLIED不是必须的  FIXED value 属性值是固定的








  2. schema 语法:   文件名.xsd  他自己又被W3C预定义的标签 约束


     1. 简单标签
      <element name="标签名" type ="八大基本类型">
               复杂类型 <complexType>
                       有序的  <sequence>
                          必须有属性:<attribute name="id" type="string" use="required"/>




         名称空间: 一个xml只能引入一个DTD约束文档,使用schema约束xml文档可以引入多个
                    类似与java的包;通过名称空间区分标签和属性来自哪个文档, 唯一的就行
                    一般URL地址来表示一个名称空间






         xmlns:             当前文档应用的名称空间  其中有-instance代表被约束 ,只能写一个


         targetNameSpace:  目标名称空间,自己的名称空间;随便写和xsd文件相同


         elementFormDefault: 描述标签的前缀,取值为 qualified 代表必须写前缀
                              质量好的,子元素和父元素必须一样,unqualified不好






      2. 在xml中一般w3c写前缀 例如 aa 
              xmlns:aa="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="/mySchema"; 和xsd文件中名称空间一样
              aa:schemaLocation="/mySchema mySchema.xsd"


              文件的地址 aa:schemalocation="/mySchema 你的xsd文件名";







原创粉丝点击