xml整理

本文详细介绍了XML文档的结构,包括文档声明、转义字符、CDATA块以及约束定义如DTD和XSD。同时,文章讲解了DOM和SAX两种解析方式,DOM解析面向对象,适合小规模数据,而SAX解析面向过程,适用于大规模文件。DOM解析允许任意位置的数据读取和修改,而SAX解析则按顺序读取,不支持回溯。
摘要由CSDN通过智能技术生成

 一个xml文档有且仅有一个根标签;
 
 文档声明
 <?xml version="" encoding="utf-8"?>]
 转义字符
 特殊字符  转义字符
   <         &lt;
   >         &gt;
   "         &quot;
   &         &amp;
  空格      &nsbp;
 
 CDATA块
 <![CDATA[
  内容
 ]]>
--------------------------------------------------------------------------
 约束:
 DTD:
  内部导入dtd:
   <!DOCTYPE note [
    <!ELEMENT note (to,from,heading,body)>
    <!ELEMENT to      (#PCDATA)>
    <!ELEMENT from    (#PCDATA)>
    <!ELEMENT heading (#PCDATA)>
    <!ELEMENT body    (#PCDATA)>
   ]>
  外部导入dtd:
   <!DOCTYPE note SYSTEM "note.dtd">
   <!DOCTYPE 根元素 PUBLIC "http://gz.itcast.cn/itcast.dtd">
  
  语法
   约束标签
     <!ELEMENT 元素名称 类别>  或 <!ELEMENT 元素名称 (元素内容)>
    类别:
     空标签: EMPTY。 表示元素一定是空元素。
     普通字符串: (#PCDATA)。表示元素的内容一定是普通字符串(不能含有子标签)。
     任何内容: ANY。表示元素的内容可以是任意内容(包括子标签)
    
    (元素内容)
     顺序问题:
      <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>: 按顺序出现子标签
     次数问题:
      标签   : 必须且只出现1次。
      标签+  : 至少出现1次
      标签*  : 0或n次。
      标签? : 0 或1次。
   约束属性
     <!ATTLIST 元素名称 属性名称 属性类型 默认值>
    默认值:
     #REQUIRED 属性值是必需的
     #IMPLIED   属性不是必需的
     #FIXED value 属性不是必须的,但属性值是固定的
    属性类型:控制属性值的
     CDATA :表示普通字符串
     (en1|en2|..): 表示一定是任选其中的一个值
     ID:表示在一个xml文档中该属性值必须唯一。值不能以数字开头
 XSD(Schema):
  XML Schema 最重要的能力之一就是对数据类型的支持。
  
  xsd:
   <xs(名称空间):schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://www.itcast.cn"
       elementFormDefault="qualified">
  xml:
   <itcast:XX xmlns:itcast="http://www.itcast.cn"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"(默认标准)
    xsi:schemaLocation="http://www.itcast.cn ZZ.xsd">
  XX标签受 ZZ.xsd约束
  http://www.w3school.com.cn/schema/schema_schema.asp
 
---------------------------------------------------------------------------------------------
 DOM解析  面向对象(Document)
 
 节点(Node)类型:标签(Element) 属性(Attribute) 文本(Text) 注释(Comment) 节点;
 
 Document对象—>节点对象->xml文档内容;
 
 Dom4j:
 
  读:
 
   //读取xml文档并且返回document对象
   SAXReader  reader=new SAXReader();
   Document doc=reader.read(new File("./src/test_1.xml"));
   
   Element(标签节点对象).nodeIterator();  //获取当前标签节点下的所有直接子节点
   
   Document.getRootElement();  //获取xml文档的根标签
   ELement.element("标签名") //指定名称的第一个子标签
   Element.elementIterator("标签名");// 指定名称的所有子标签
   Element.elements(); //获取所有子标签
   获取深层次标签也只能一层一层的获取;
   
   Element.attributeValue("属性名") //返回(String类型)指定属性的属性值
      Element.attribute("属性名");//返回指定的属性对象
   Element.attributes();  //返回(List<Attribute>)所有属性对象
   Element.attibuteIterator(); //返回(Iterator<Attribute>)所有属性对象
   
   Element.getText();  //返回当前标签的文本
   Element.elementText("标签名") //返回当前标签的指定名称的子标签的文本内容 
   *xml中,空格和换行被作为原始内容处理;
  
  写:
   
   XMLWriter writer = new XMLWriter(OutputStream,OutputForamt)
    OutputForamt:指定写出格式;
     1
      OutputFormat.createCompactFormat()//紧凑的写入
      OutputFormat.createPrettyPrint()//漂亮的写入
     2
      OutputForamt类对象.setEncoding("utf-8");
   wirter.write(Document);
   
   DocumentHelper.createDocument() //新建一个document对象
   doc.addElement("名称")  增加标签
   ele.addAttribute("名称",“值”)  增加属性
   
   Attribute.setValue("值")  修改属性值
   Element.addAtribute("同名的属性名","值")  修改同名的属性值
   Element.setText("内容")  修改文本内容
   
   Element.detach();  删除标签 
   Attribute.detach();  删除属性
   
   xPath技术
   快速获取所需的节点对象。
   
   导入jaxen-1.1-beta-6.jar包后,dom4j支持xPath技术
       
     selectNodes("xpath表达式");   返回多个节点对象List;
     selectSingleNode("xpath表达式");  返回一个节点对象;
   
   xPath语法
    /      绝对路径      表示从xml的根位置开始或直接子元素
    //     相对路径      表示不分任何层次结构的选择元素。
    *      通配符        表示匹配所有元素
    []      条件         表示选择什么条件下的元素
     [1](第一个) [last()]最后一个
    @       属性         表示选择属性节点
     //@id(返回id属性)  //bbb[@id=] 返回含有id属性的bbb标签
    and     关系         表示条件的与关系(等价于&&)
    text()  文本         表示选择文本内容 
-------------------------------------------------------------------------------------------------   
 SAX解析 面向过程
 
 jdk中 org.xml.sax.*
  
  SAXParser类: 用于读取和解析xml文件对象
   SAXParser parser=SAXParserFactory.newInstance().newSAXParser();
  parse(File?f, DefaultHandler?dh)方法: 解析xml文件
   DefaultHandler: SAX事件处理程序的默认基类
    
-------------------------------------------------------------------------------------------------------------------   
    DOM解析                                                                              |                  SAX解析
-------------------------------------------------------------------------------------------------------------------
原理: 一次性加载xml文档,不适合大容量的文件读取            |   原理: 加载一点,读取一点,处理一点。适合大容量文件的读取
DOM解析可以任意进行增删改成                                              |         SAX解析只能读取
DOM解析任意读取任何位置的数据,甚至往回读                     |     SAX解析只能从上往下,按顺序读取,不能往回读
DOM解析面向对象的编程方法(Node,Element,Attribute)|               面向过程
-------------------------------------------------------------------------------------------------------------------   
   
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值