`
Junjiejkl
  • 浏览: 62382 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用dom来解析XML文件

阅读更多
car.xml:
<?xml version="1.0" encoding="UTF-8"?>
<车辆清单>
	<汽车>
		<车牌 出产时间="2009年">奥迪</车牌>
		<产地>北京</产地>
	</汽车>

</车辆清单>


car.dtd:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 车辆清单 (汽车+)>
<!ELEMENT 汽车     (车牌,产地)>
<!ELEMENT 车牌     (#PCDATA)>
<!ELEMENT 产地     (#PCDATA)>

<!ATTLIST 车牌 出产时间 CDATA #REQUIRED> 


Demo1.java:
package cn.itcast.xml.parser.dom;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class Demo1 {
	public static void main(String[] args) throws Exception {
		//创建DOM解析器工厂[抽象工厂设计模式]
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//设置将空白字符忽略
		factory.setIgnoringElementContentWhitespace(true);
		//DOM解析器
		DocumentBuilder parser = factory.newDocumentBuilder();
		//加载XML文件,取得代表整个XML的document对象
		Document document = parser.parse(new File("src/cn/itcast/xml/parser/dom/car.xml"));
		//取得根元素
		Element rootElement = document.getDocumentElement();
		System.out.println("根元素名称:" + rootElement.getNodeName());
		NodeList list = rootElement.getChildNodes();
		System.out.println("共有" + list.getLength()+"辆汽车");
		for(int i=0;i<list.getLength();i++){
			Element element = (Element) list.item(i);
			String band = element.getElementsByTagName("车牌").item(0).getFirstChild().getTextContent();
			String place = element.getElementsByTagName("产地").item(0).getFirstChild().getTextContent();
			System.out.println("车牌:" + band);
			System.out.println("产地:" + place);
			System.out.println("-------------");
		}
	}
}


Demo2.java:
package cn.itcast.xml.parser.dom;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

public class Demo2 {
	@Test
	public void create() throws Exception{
		Document document = getDocument();
		Element rootElement  = document.getDocumentElement();
		//创建元素
		Element carElement = document.createElement("汽车");
		//创建文本
		Text text = document.createTextNode("比亚迪");
		carElement.appendChild(text);
		//创建属性
		carElement.setAttribute("id","aaaaaa");
		rootElement.appendChild(carElement);
		writeToFile(document);
	}
	@Test
	public void update() throws Exception{
		Document document = getDocument();
		Element rootElement = document.getDocumentElement();
		NodeList list = rootElement.getChildNodes();
		Element carElement = (Element) list.item(3);//定位于第二辆汽车
		carElement.getElementsByTagName("产地").item(0).setTextContent("广州");
		writeToFile(document);
	}
	@Test
	public void delete() throws Exception{
		Document document = getDocument();
		Element rootElement = document.getDocumentElement();
		Element carElement = (Element) rootElement.getElementsByTagName("汽车").item(1);
		carElement.getParentNode().removeChild(carElement);
		writeToFile(document);
	}	
	private Document getDocument() throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setIgnoringElementContentWhitespace(true);
		DocumentBuilder parser = factory.newDocumentBuilder();
		Document document = parser.parse(new File("src/cn/itcast/xml/parser/dom/car.xml"));
		return document;
	}

	private void writeToFile(Document document)throws Exception {
		//创建XML输出工厂
		TransformerFactory tf = TransformerFactory.newInstance();
		//创建XML输出对象
		Transformer t = tf.newTransformer();
		//源对象
		DOMSource source = new DOMSource(document);
		//目标对象
		StreamResult result = new StreamResult(new File("src/cn/itcast/xml/parser/dom/car.xml"));
		//真正输出
		t.transform(source,result);
	}
}


*1,dom解析器
//DOM4J(SAXReader)
//SAX(SAXParser)
//DOM(DocumentBuilder)
DOM解析器常用API:
DocumentBuilderFactory.newInstance():创建DOM解析器工厂
factory.newDocumentBuilder():创建DOM解析器
factory.setIgnoringElementContentWhitespace(true):设置忽略空白字符[根元素]
parser.parse(new File("car.xml")):加载需要解析的XML文件
document.getDocumentElement():取得XML的根元素
rootElement.getNodeName():取得元素的名称
list.getLength():取得子元素的长度
list.item(i):取得第i个子元素,从0开始
element.getElementsByTagName("车牌"):取得该元素下以"车牌"命名的所有子元素的集合
element.getFirstChild():取得该元素下的第一个子元素
element.getTextContent():取得该元素中的字符串内容(不是对象)
document.createElement("汽车");创建新元素
Element.appendChild(carElement):向父元素填加子元素
document.createTextNode("比亚迪"):创建新文本
Element.appendChild(text):追加对象到父元素
Element.setAttribute("id","aaaaaa"):创建新属性和属性值
Element.getParentNode():取得该元素的直接父元素
Elemnet.removeChild(carElement):从父元素中删除子元素

2,web基本概念和安装配置tomcat服务器
   JavaWeb(servlet/jsp),静态Web资源(html),动态Web资源(servlet/jsp),Web服务器

3,tomcat启动时常见错误及其处理方案
   (1)没有配置JAVA_HOME
   (2)端口号被其它网络程序占用
   (3)在web服务器集群情况下,如何确定启动哪台

4,网站,web应用,web资源的关系,以及web应用的结构

*5,配置虚拟目录
   tomcat/conf/server.xml,每次改动该文件后,需要重新启动tomcat。
   <Context path="/虚拟目录名" docBase="真实web应用存储的位置"/>
   如果将web应用直接放在webapps/目录下,tomcat服务器会自动将位于该目录下的web应用名映射虚拟目录(tomcat6)
   如果在非webapps/目录下放置web应用,必须手工映射虚拟目录(tomcat6)
   path=""
   docBase=""
   unpackWAR="true"当tomcat启动时,自动将位于webapps/目录中的WAR文件解压",默认为true
   reloadable="true/false,tomcat服务器自动检查内容是否有更新,如果有,在true情况下,自动加载最重内容,无需手工
               重启。在false情况下,必须手工重启"。[webapps/应用名/WEB-INF/lib或classes]
               开发阶段最好使用true,在上线阶段最好使用false。

  
*6,配置虚拟网站
   (1)浏览器访问服务器的原理
   (2)在tomcat中配置多个虚拟网站

7,web架构
B/S                    C/S
浏览器/服务器          客户端/服务器

区别:


B/S
对显示要求不高
更新由服端完成
客户端和服务端间接通信,理论上支持无限客户端
客户端只要有浏览器,要求不高
服务器对安全要求可以分散,因此相对而且要求较低
服务器扩展性较高
相对速度较慢


C/S
对显示要求高
更新由客户端完成
客户端和服务端直接通信,理论上支持有限客户端
客户端要求较高
服务器对安全要求较高
服务器扩展较较低
相对速度较快















分享到:
评论

相关推荐

    DOMParser解析xml

    DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...

    使用DOM解析XML和使用SAX解析XML

    在Java中,使用DOM解析XML文档的典型步骤如下: 1. 使用`DocumentBuilderFactory`类创建一个解析器工厂实例。 2. 通过解析器工厂获取`DocumentBuilder`对象。 3. 使用`DocumentBuilder`对象的`parse`方法来解析XML...

    java平台中使用DOM解析xml文件

    总的来说,理解并熟练掌握DOM解析XML是Java开发中的基础技能,无论是在简单的数据读取还是复杂的XML操作中,它都能提供强大的支持。同时,根据项目需求和性能考虑,可以选择JDOM等其他XML处理库作为替代方案。

    dom4解析xml需要的包

    1. **解析XML**:DOM4J支持使用DOM、SAX或StAX解析器读取XML文件,其中DOM是将整个XML文档加载到内存中,适用于小型文件;SAX是事件驱动的解析,适用于大文件;而StAX则提供了一种更高效的方式,通过迭代器逐个处理...

    android上使用DOM解析XML

    总结来说,Android上使用DOM解析XML是一种常见且强大的方法,适用于处理小到中等大小的XML文件。通过理解DOM模型和相应的API,开发者可以高效地解析XML数据,为应用程序提供丰富的信息处理能力。然而,对于大型XML...

    java dom 解析 xml 实例

    Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...

    分别使用DOM和DOM4j解析XML文件

    本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...

    DOM解析XML文件例子

    在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    Java使用sax、dom、dom4j解析xml文档

    DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...

    android Dom解析xml文件

    本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的基本概念 DOM解析是一种将XML文件转换为内存中对象模型的方法。它将XML文档视为一棵树,其中每个元素、...

    DOM解析xml文件实例讲解

    本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...

    Dom方式解析XML

    - **解析XML文件**:然后,使用`DocumentBuilder`解析XML文件,得到`Document`对象,表示整个XML文档。 ```java File xmlFile = new File("path_to_xml_file"); Document document = builder.parse(xmlFile); `...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    Android使用DOM方式解析XML

    本篇文章将深入探讨如何使用DOM(文档对象模型)解析XML文件,并将其内容显示在应用程序的用户界面上。 首先,理解DOM解析的基本概念至关重要。DOM是一种标准,允许程序以树形结构访问和操作XML文档的全部内容。它...

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    使用DOM解析XML文档

    文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点

    java中用dom解析xml的经典入门级文档

    #### 四、使用DOM解析XML文档 接下来,我们通过一个简单的例子来看一下如何使用DOM来解析XML文档。 ##### 1. 示例XML文档 ```xml &lt;?xml version="1.0" encoding="gb2312"?&gt; &lt;name&gt;rjzjh &lt;price&gt;jjjjjj ``...

    Android Dom解析XML

    在Android中,我们通常使用`javax.xml.parsers.DocumentBuilderFactory`来创建解析器,并通过`DocumentBuilder`实例解析XML文件。下面是一个简单的示例: ```java DocumentBuilderFactory factory = ...

Global site tag (gtag.js) - Google Analytics