xml学习

1、xml是可扩展的标记子性、解释性语言。
2、用XML可以起到数据库的作用:
原因是xml可以描述表结构,xml还可以承载数据。
3、读取XML文件的两种接口:

  • DOM: 一次性把所有XML文件的信息都读取到内存中,如何就可以操作XML文件 (适合读写小的XML文件)
  • SAX: 采用事件机制,从头到尾读取XML文件,并把读到的信息抛出来 (适合读取大型XML文件)(不常用,这里不写了)

4、xml重点集

  • XML文档的第一行应该为文档声明 <?xml version="1.0"?>
  • XML标志是大小写敏感的
    与HTML不一样, XML标记是大小写敏感的。
  • 所有的XML元素必须合理包含
    在XML中不允许不正确的嵌套包含。例如:
     <b><i>This text is bold and italic</i></b>
  • 所有的XML文档必须有一个根元素
    XML文档中的第一个元素就是根元素。所有的元素都可以有子元素,子元素必须正确的嵌套在父元素中。
  • 所有的XML元素都必须要有一个结束标志
    在XML文档中, 忽略结束标记是不符合规定的。在HTML文档中,一些元素可以是没有结束标记的
  • 属性值必须使用引号“”
  • 在XML中,元素的属性值没有引号引着是不符合规定的。
  • XML中的注释
    在XML中注释的语法基本上和HTML中的一样。

5、xml文档举例

<?xml version="1.0" encoding="UTF-8"?>
<schools>
<school  sname="内蒙古民族大学">
	<class cno="100" cname="java一班">
		<student sno="1001">
		 <name>张三</name>
		</student>
		<student sno="1002">
		<name>李四</name>
		</student>
		<student sno="1003">
		<name>王五</name>
		</student>
	</class>
	<class  cno="200" cname="java二班">
		<student sno="2001">
		<name>贝贝</name>
		</student>
		<student sno="2002">
		<name>欢欢</name>
		</student>
		<student sno="2003">
		<name>点点</name>
		</student>
	</class>
</school>

<school sname="内蒙古师范大学">
	<class cno="300" cname="java一班">
		<student sno="3001">
		 <name>杨幂</name>
		</student>
		<student sno="3002">
		<name>迪丽热巴</name>
		</student>
		<student sno="3003">
		<name>杨颖</name>
		</student>
	</class>
	<class  cno="400" cname="java二班">
		<student sno="4001">
			<name>罗晋</name>
		</student>
		<student sno="4002">
		<name>唐嫣</name>
	</student>
		<student sno="4003">
		<name>黄晓明</name>
		</student>
	</class>
</school>
</schools>

6、xml主要方法

  • Document // Document接口代表整个HTML或XML文档
  • getElementsByTagName(String tagname) // 以文件顺序返回 NodeList所有 Elements的给定标签名称,并包含在文档中
  • NodeList getChildNodes() //包含此节点的所有子节点
  • getNodeType() //代表基础对象的类型的代码,如上所定义。
  • getTextContent() //此属性返回此节点及其后代的文本内容。
  • String getAttribute(String name) //按名称检索属性值。

7、xml文档读取举例

package com.icss.ui;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class TestXML {
public static void main(String[] args) {
	String path=TestXML.class.getResource("/").getPath();//获取程序正在执行的路径
	String fname=path+"/School.xml";
	DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();//定义工厂API,使应用程序能够从XML文档获取生成DOM对象树的解析器。
	Document doc =null;//文档树的根
	try {
		DocumentBuilder db = dbf.newDocumentBuilder();//从XML获得一个Document 
		 doc = db.parse(new File(fname));//将给定文件的内容解析为XML文档,并返回一个新的DOM Document对象。 
	} catch (ParserConfigurationException e) {
		e.printStackTrace();
	} catch (SAXException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}		
	NodeList nlist = doc.getElementsByTagName("school");//读取,然后存放于NodeList节点集合中
	for(int i=0;i<nlist.getLength();i++) {
		Node node=nlist.item(i);//返回index中的index项目。 如果index大于或等于列表中的节点数,则返回null 。 
		if(node.getNodeType()==Node.ELEMENT_NODE)
		{
			Element sch=(Element)node;
			String name=sch.getAttribute("sname");
			System.out.println("sname="+name);
			//读取当前school下面的class信息
			NodeList classlist = sch.getChildNodes();
			for(int k=0;k<classlist.getLength();k++) {
				node = classlist.item(k);
				if(node.getNodeType() == Node.ELEMENT_NODE) {//表示是xml文档中的元素
					Element cls = (Element)node;
					String cno = cls.getAttribute("cno");//获取属性值
					String cname = cls.getAttribute("cname");//获取属性值
					System.out.println(cno + "--" + cname);
				}
			}
		}
		
	}
}
}

执行结果:

sname=内蒙古民族大学
100--java一班
200--java二班
sname=内蒙古师范大学
300--java一班
400--java二班
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值