XML入门01

XML:可扩展的标记语言

  1. 用来保存数据
  2. 可以用来做配置文件
  3. 数据传输载体
  1. version:解析这个xml的时候,使用什么版本的解析器解析
  2. encoding:解析xml中的文字的时候,使用什么编码来编译
  3. standalone:no 该文档会依赖关联其他文档;yes 这是一个独立的文档

几个非法字符:< <    > >    & &    ' 省略号    &quto;  引号

XML解析方式:有很多种,常用DOM、SAX

针对解析方式的API   (jaxp  jdom  dom4j)

入门案例:

  1. eclipse新建java项目
  2. 在src目录下新建文件夹xml,再新建.xml文件
  3. 导入jar包,在项目目录下新建文件夹lib,导入dom4j-1.6.1.jar
  4. 右键dom4j-1.6.1.jar,Build Path-->Add to Build Path
  5. 编写xml文件代码如下
  6. 
    ?
    	
    		小明
    		18
    		广州
    	
    	
    		小张
    		19
    		深圳
    	
    

    在src目录下新建包,新建class,代码如下

  7. package test;
    
    
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class MainTest {
    	public static void main(String[] args) {
    		try {
    			//1.创建SAX读取对象
    			SAXReader reader=new SAXReader();
    			//2.指定解析的xml源
    			Document document=reader.read("src/xml/stus.xml");
    			//3.得到元素
    			//得到根元素
    			Element rootElement=document.getRootElement();
    			System.out.println(rootElement.getName());
    			
    			//获取根元素下的子元素
    			System.out.println(rootElement.element("stu").element("age").getText());
    			
    			//获取根元素下面的所有子元素.stu元素
    			List elements=rootElement.elements();
    			System.out.println(elements.size());
    			for (Element element : elements) {
    				String name=element.element("name").getText();
    				String age=element.element("age").getText();
    				String adress=element.element("adress").getText();
    				System.out.println("name="+name+"   age="+age+"   adress="+adress);
    			}
    		} catch (DocumentException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    XML入门01_第1张图片XML入门01_第2张图片

  8. Xpath使用
package test;


import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class XpathTest {
	public static void main(String[] args) {
		try {
			//1.创建SAX读取对象
			SAXReader reader=new SAXReader();
			//2.指定解析的xml源
			Document document=reader.read("src/xml/stus.xml");
			//3.得到元素
			//得到根元素
			Element rootElement=document.getRootElement();
			
			//使用Xpath   添加jaxen-1.1-beta-6.jar    获取第一个
			Element nameElement=(Element) rootElement.selectSingleNode("//name");
			System.out.println(nameElement.getText());
			
			System.out.println("--------------");
			
			//获取文档里面所有name元素
			List list=rootElement.selectNodes("//name");
			for (Element element : list) {
				System.out.println(element.getText());
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

XML约束

  1. DTD:早期出现  可读性差
  2. Schema:其实就是一个xml,使用xml的语法规则,xml解析器解析起来比较方便

一个xml如果想指定它的约束规则,可以引用多个schema约束,DTD约束只能一个;

 

 

C/S(client/server)    例如:QQ、微信

  1. 优点:有一部分代码写在客户端,用户体验比较好
  2. 缺点:服务器更新,客户端也要随着更新。占用资源大

B/S(browser/server)  例如:网页游戏

  1. 优点:客户端只要有浏览器就可以了。占用资源小,不用跟新
  2. 缺点:用户体验不佳。

XML入门01_第3张图片

你可能感兴趣的:(XML入门01)