XML

2018-12-07  本文已影响0人  东风谷123Liter

XML: eXtendsible markup language

作用:用来保存数据(少量数据)

可以用来配置文件
数据传输体(客户端<--->服务端),就像登入失败或成功都会返回数据,这些数据不仅仅只是“成功”或者“失败”

命名规则: image.png

转义字符: image.png

注释: <!-- This is a comment -->

CDATA:

1, 如果某段字符串里面有过多的字符,并且里面包含了类似标签或者关键字的这种文本,不像让XML的解析器去解析。那么可以使用CDATA来包装。不过这个CDATA一般比较少看到,通常用在服务端给客户端返回数据的时候用到。
2, 格式: <des><![CDATA[<a herf = "http://www/baidu.com">百度一下吧</a>]]></des>
3, CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束

XML的解析:

XML的解析方式:

1,DOM:doument object model 把所有的文档读到内存当中,形成树状结构。
(1)整个文档称之为document对象,文本也可以称之为Text对象,以上所有的对象都可以称之为Node节点。如果XML特别大,那么将会造成内存的溢出。
(2)可以对文档进行增删操作

2,SAX:Simple API for Xml 基于时间驱动。读一行,解析一行。
(1) 不会造成内存溢出。
(2)不可以进行增删,只能查询。
(3)一些组织或公司,针对以上两种解析方式,给粗解决方案有哪些?
(4)jaxp sun公司
(5)jdom
(6)jom4j 使用比较广泛

代码实现:

先倒入dom4j.jar文件;jdk里面没有这个文件
遇到的错误:[图片上传失败...(image-470edd-1544147814292)]


image.png

工程里面有一个大的“!”号,一般都是因为重复导入jar文件引起的; buildPath出错,查看buildPath Library就可以发现和更改错误。jar文件尽量单个单个导入,不要多个jar文件夹的压缩格式。

    package com.xieliting.xml;
    import java.io.File;
    import java.util.List;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.dom4j.Document;
    public class xml_dom4j {
        public static void main(String[] args) {
            //1, 创建sax读取对象
            try {
                SAXReader reader = new SAXReader();  //类似于jdbc: classloader
    
                //2, 指定解析的XML源
                Document document = reader.read(new File("src/xml/demo.xml"));
    
                //3.得到元素
    
                //得到根元素
                Element rootElement = document.getRootElement();
    
                //获得根元素下面的元素 age name
                Element stu = rootElement.element("stu");
                String age = stu.element("age").getText();
                String name = stu.element("name").getText();
                System.out.println("name:"+name+" age:"+age);
    
                //获取所有的子元素、子孙元素
                List<Elementelements = rootElement.elements();
    
                //遍历所有的子元素
                for (Element element : elements) {
                    List<Elementsubelements = element.elements();
        
                    //遍历所有的子孙元素
                    for (Element subelement : subelements) {
                        System.out.print(subelement.getName()+"  ");
                        System.out.println(subelement.getText());
                    }
                }
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }


XML的高级应用:

    package com.xieliting.xml;
    import java.io.File;
    import java.util.List;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.dom4j.Document;
    public class xml_Xpath {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
        
            //1, 创建sax读取对象
            try {
                SAXReader reader = new SAXReader();  //类似于jdbc: classloader
                
                //2, 指定解析的XML源
                Document document = reader.read(new File("src/xml/demo.xml"));
                
                //3.得到元素
                //得到根元素
                Element rootElement = document.getRootElement();
                
                //获得根元素下面的元素 age name
                Element name_Element = (Element)rootElement.selectSingleNode("/stus/stu/name");
                System.out.println(name_Element.getText());
                
                //获取所有的子元素、子孙元素
                List<Element> subelements = rootElement.selectNodes("/stus/stu/*");
                
                //遍历所有的子元素
                for (Element subelement : subelements) {
                    System.out.println(subelement.getText());
                }
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

XML约束:(了解 )

DTD

在里面约束:

![image.png](https://img.haomeiwen.com/i8043783/1f069bb39fa33dea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

Scheam

![image.png](https://img.haomeiwen.com/i8043783/f9564cd7e7dd6973.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://img.haomeiwen.com/i8043783/2b9f469da0953453.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://img.haomeiwen.com/i8043783/31427ac6322f1e94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![image.png](https://img.haomeiwen.com/i8043783/58a7b109d89b0608.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

命名空间的作用:一个XML如果想制定她的约束规则,只能指定一个约束规则DTD, 不鞥指定多个DTD;但是如果一个XML可以引用多个scheam规则,但是这能引用一个DTD规则。作用就是写元素的时候可以制定元素使用哪一套越是规则。

上一篇 下一篇

猜你喜欢

热点阅读