XML入门01

XML:可扩展的标记语言

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

几个非法字符:&lt; <    &gt; >    &amp; &    &apos; 省略号    &quto;  引号

<![CDATA][不解析区]>

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. <?xml version="1.0" encoding="UTF-8"?>
    <stus>?
    	<stu>
    		<name>小明</name>
    		<age>18</age>
    		<adress>广州</adress>
    	</stu>
    	<stu>
    		<name>小张</name>
    		<age>19</age>
    		<adress>深圳</adress>
    	</stu>
    </stus>

    在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<Element> 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();
    		}
    	}
    }
    

  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<Element> 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. 缺点:用户体验不佳。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
某学校拟使用XML文件制定一个学生(含已毕业学生)信息文档,该文档描述其学校内学生的管理信息。 1、 选用合适的编辑器,编写一个XML文件,应至少包括下述信息内容: 学生目录下应该包括: (1) 所有学生的共有信息:班级的名字、专业、类别等 (2) 学生 学生1 学生基本信息(学生姓名、性别、学号、年龄) 入学信息(入学时间、辅导员名) 班级内学生生源信息( 生源1:(生源地名称、联系方式等信息) 生源2: 生源n: ) 毕业信息(毕业时间、毕业数量、辅导员名) 学生2 学生3 。。。。。 学生N (3)辅导员 辅导员1(辅导员姓名、联系方式、职位、管理的班级名) 辅导员2 2、针对该XML文件,画出其相应的树状结构图。 3、针对所编写的XML文件,编写其相应的DTD文件,并使用解析器验证其有效性,对验证结果抓图。 4、针对所编写的XML文件,编写合适的XSL文件,将学生基本信息打印成表格,并用ie浏览器进行浏览并截图。 5、使用JAVA编程语言,对XML文件进行解析: 显示该xml文件的所有节点、属性的名字; 同时显示该xml文件所有标记的文本数据; 计算学生的入学平均年龄并进行输出。 要求:1)xml文件中应该包括文本内容、标记、属性、命名空间,混合标记等的内容 2)dtd文件应该有相应的结果抓图 3)xsl文件应用到规范中的常用技巧,例如模板调用、for-each、value-of、xsl标记等。 4)解析器结果应该有抓图。 5)形成的代码交老师验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值