XML简介

要理解XML,HTML等格式,先来理解文档对象模型DOM

  

根据 DOM,HTML 文档中的每个成分都是一个节点,这些节点组成了一棵树。 DOM 是这样规定的: 整个文档是一个文档节点 每个 HTML 标签是一个元素节点 包含在 HTML 元素中的文本是文本节点 每一个 HTML 属性是一个属性节点 注释属于注释节点

节点彼此都有等级关系。HTML 文档中的所有节点组成了一个文档树(或节点树)。HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点。树起始于文档节点,并由此继续伸出枝条,直到处于这棵树最低级别的所有文本节点为止。

DOM将整个XML文件加载到内存中,并构建出节点树;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息; 这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快

现在主要流行的是sax,dom4j和jdom

这章主要说使用DOM来解析

而使用DOM解析XML是有步骤的

1、创建解析器工厂对象 DocumentBuildFactory对象

2、由解析器工厂对象创建解析器对象,即DocumentBuilder对象

3、由解析器对象对指定XML文件进行解析,构建相应的DOM树,创建Document对象,生成一个Document对象

4、以Document对象为起点对DOM树的节点进行查询

5、使用Document的getElementsByTagName方法获取元素名称,生成一个NodeList集合,

6、遍历集合


DocumentBuilderFactory factroy = DocumentBuilderFactory.newInstance(); try { DocumentBuilder builder = factroy.newDocumentBuilder(); Document document = builder.parse("pets.xml"); NodeList lists = document.getElementsByTagName("dog"); System.out.println("chengmuzhe养的狗狗的初始化信息");

		for (int i = 0; i < lists.getLength(); i++) {
			Node pet = lists.item(i);
			for (Node node = pet.getFirstChild(); node != null; node = node
					.getNextSibling()) {
				if (node.getNodeType() == Node.ELEMENT_NODE) {
					String name = node.getNodeName();
					String value = node.getFirstChild().getNodeValue();
					System.out.println(name + ":" + value + "\t");
				}
			}
		}
		NodeList lists1 = document.getElementsByTagName("penguin");
		System.out.println("chengmuzhe养的企鹅的初始化信息");

		for (int i = 0; i < lists1.getLength(); i++) {
			Node pet = lists1.item(i);
			for (Node node = pet.getFirstChild(); node != null; node = node
					.getNextSibling()) {
				if (node.getNodeType() == Node.ELEMENT_NODE) {
					String name = node.getNodeName();
					String value = node.getFirstChild().getNodeValue();
					System.out.println(name + ":" + value + "\t");
				}
			}
		}

	} catch (Exception e) {
		// TODO: handle exception
	}

}