XML简单总结(0309day08)

XML总结

1.XML的简介

     

XML

HTML

EXtensible Markup Language

可扩展标记语言,可自定义标签

(1)名称中可以包含字母、数字、下划线、减号,但不能以数字、减号开头

(2)不能以xml开头,无论是大写还是小写都不可以

(3)不能包含空格

Hypertext markuplanguage

超文本标记语言,固定标签

严格区分大小写

不区分大小写

所有的标签必须成对出现,且标签不能交叉嵌套

大多的标签是成对出现,但也有不成对出现的标签,如<br>

    文档声明必须为<?xml开头,以?>结束

html无此要求

标签结构:开始标签、元素体、结束标签

标签结构:开始标签、元素体、结束标签

属性是元素的一部分,它必须出现在元素的开始标签中,一个元素可以有0~N个属性,但一个元素中不能出现同名属性

属性不必出现在元素的开始标签中,可以放在css文件中,或者内联css

注释以“<!--”开始,以“-->”结束

注释以“<!--”开始,以“-->”结束

用来存储数据或配置文件

用来解析显示页面

2.XML中常用的转义字符

大于号(&gt;)   

小于号(&lt;)   

双引号(&quot;)

单引号(&apos;)

&号(&amps;)

备注:当大量的转义字符出现在xml文档中时,会使xml文档的可读性大幅度降低。这时如果使用CDATA段就会好一些。

在CDATA段中出现的“<”、“>”、“””、“’”、“&”,都无需使用转义字

符。CDATA的格式:<![CDATA[ 要显示的内容 ]]>

3.XML约束

DTD约束

Schema约束

DTD(Document Type Definition),文档类型定义,用来约束XML文档。

Schema是新的XML文档约束;要比DTD强大很多;

Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。

内部DTD:在XML文档内部嵌入DTD,只

对当前XML文档有效;

外部DTD:独立的DTD文件,扩展名为.dtd;

<!DOCTYPE students SYSTEM“stud.dtd”>

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.example.org/demo"

 elementFormDefault="qualified">

 <element name="bookstore">

     <complexType>  <!—包含元素或属性的标签-->

         <sequence maxOccurs="3" minOccurs="1"><!—至少出现1次,最多3次-->

             <element name="book">

                <complexType>

                   <sequence>

                      <element name="title">

                         <complexType>

                            <simpleContent>

                                <extension base="string">

                                 <attribute name="lang" type="string"></attribute>

                                </extension>

                            </simpleContent>

                         </complexType>

                      </element>

                      <element name="author"  type="string"></element>

                      <element name="year" type="date"></element>

                      <element name="price" type="double"></element>

                   </sequence>

                   <attribute name="category" type="string" use="required"></attribute>

                </complexType>

             </element>

         </sequence>

     </complexType>

 </element>

</schema>

内部示例:

<!ELEMENT students (student+)>

<!ELEMENT student (name,age,sex)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ELEMENT sex (#PCDATA)>

使用*、+、?来指定子元素出现的次数

*:可以出现0~N次;

+:可以出现1~N次;

?:可以出现0~1次。

4.XML的解析

在xml的解析中主要讲解了dom4j

4.1 dom4j的快速入门:

      //第一步:创建解析对象

      SAXReader sr=new SAXReader();

      //第二步:读取相应的XML文件,read中的内容为需要读取的xml文件的路径

      Document doc=sr.read(“*******”);

      //第三步:得到相应的根元素

      Element root=doc.getRootElement();

      //再调用其他方法,获取子元素

4.2 Xpath的快速入门

      //第一步:创建解析对象

      SAXReader reader = new SAXReader();

   //第二步:读取xml文件

      Document doc=reader.read(“*****”);

   //第三步:得到要求的结点(Nodes或singleNode)

demo1

      List<Element> elements = document.selectNodes("//year"); 

      //该方法是获得所有year标签

         for(Element ele:elements){

              System.out.println(ele.getText());

         }

demo2

      Element ele = (Element) document.selectSingleNode("//book[@category='WEB']/price");

      //该方法是获取属性名为category,属性值为web的book标签下的price标签,结果是单个标签

System.out.println(ele.getText());

 

dom4j中常用的方法:

Node方法:

l  String asXML():把当前节点转换成字符串,如果当前Node是Document,那么就会把整个XML文档返回;

l  String getName():获取当前节点名字;Document的名字就是绑定的XML文档的路径;Element的名字就是元素名称;Attribute的名字就是属性名;

l  Document getDocument():返回当前节点所在的Document对象;

l  short getNodeType():获取当前节点的类型;

l  String getNodeTypeName():获取当前节点的类型名称,例如当前节点是Document的话,那么该方法返回Document;

l  String getStringValue():获取当前节点的子孙节点中所有文本内容连接成的字符串;

l  String getText():获取当前节点的文本内容。如果当前节点是Text等文本节点,那么本方法返回文本内容;例如当前节点是Element,那么当前节点的内容不是子元素,而是纯文本内容,那么返回文本内容,否则返回空字符串;

l  void setDocument(Document doc):给当前节点设置文档元素;

l  void setParent(Element parent):给当前节点设置父元素;

l  void setText(String text):给当前节点设置文本内容;

 

 

Branch方法:

l  void add(Element e):添加子元素;

l  void add(Node node):添加子节点;

l  void add(Comment comment):添加注释;

l  Element addElement(String eleName):通过名字添加子元素,返回值为子元素对象;

l  void clearContent():清空所有子内容;

l  List content():获取所有子内容,与获取所有子元素的区别是,<name>liSi</name>元素没有子元素,但有子内容;

l  Element elementById(String id):如果元素有名为“ID”的属性,那么可以使用这个方法来查找;

l  int indexOf(Node node):查找子节点在子节点列表中的下标位置;

l  Node node(int index):通过下标获取子节点;

l  int nodeCount():获取子节点的个数;

l  Iterator nodeIterator():获取子节点列表的迭代器对象;

l  boolean remove(Node node):移除指定子节点;

l  boolean remove(Commont commont):移除指定注释;

l  boolean remove(Element e):移除指定子元素;

l  void setContent(List content) :设置子节点内容;

 

 

Document方法:

l  Element getRootElement():获取根元素;

l  void setRootElement():设置根元素;

l  String getXmlEncoding():获取XML文档的编码;

l  void setXmlEncoding():设置XML文档的编码;

 

 

Element方法:

l  void add(Attribute attr):添加属性节点;

l  void add(CDATA cdata):添加CDATA段节点;

l  void add(Text Text):添加Text节点;

l  Element addAttribute(String name, String value):添加属性,返回值为当前元素本身;

l  Element addCDATA(String cdata):添加CDATA段节点;

l  Element addComment(String comment):添加属性节点;

l  Element addText(String text):添加Text节点;

l  void appendAttributes(Element e):把参数元素e的所有属性添加到当前元素中;

l  Attribute attribute(int index):获取指定下标位置上的属性对象;

l  Attribute attribute(String name):通过指定属性名称获取属性对象;

l  int attributeCount():获取属性个数;

l  Iterator attributeIterator():获取当前元素属性集合的迭代器;

l  List attributes():获取当前元素的属性集合;

l  String attributeValue(String name):获取当前元素指定名称的属性值;

l  Element createCopy():clone当前元素对象,但不会copy父元素。也就是说新元素没有父元素,但有子元素;

l  Element element(String name):获取当前元素第一个名称为name的子元素;

l  Iterator elementIterator():获取当前元素的子元素集合的迭代器;

l  Iterator elementIterator(String name):获取当前元素中指定名称的子元素集合的迭代器;

l  List elements():获取当前元素子元素集合;

l  List elements(String name):获取当前元素指定名称的子元素集合;

l  String elementText(String name):获取当前元素指定名称的第一个元素文件内容;

l  String elementTextTrime(String name):同上,只是去除了无用空白;

l  boolean isTextOnly():当前元素是否为纯文本内容元素;

l  boolean remove(Attribute attr):移除属性;

l  boolean remove(CDATA cdata):移除CDATA;

l  boolean remove(Text text):移除Text。

 

 

DocumentHelper静态方法介绍:

l  static Document createDocument():创建Dcoument对象;

l  static Element createElement(String name):创建指定名称的元素对象;

l  static Attribute createAttrbute(Element owner, String name, String value):创建属性对象;

l  static Text createText(String text):创建属性对象;

  • static Document parseText(String text):通过给定的字符串生成Document对象;

你可能感兴趣的:(XML简单总结(0309day08))