`
hesihua
  • 浏览: 228976 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

DOM编程

    博客分类:
  • xml
 
阅读更多

最近一直在纠结关于xml方面的知识,包括xml语法,分析xml的结构和语法:包括DTD 和schema的语法定义等.

特别是到了xml解析这部分,我们在面试的时候经常会被问到这样的问题.

下面的一个例子是关于DOM解析的:

 

package com.j2ee14.ch4;

import java.io.StringWriter;

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

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.sun.org.apache.xml.internal.serialize.OutputFormat;
import com.sun.org.apache.xml.internal.serialize.XMLSerializer;

public class DOMStudy {
	Document doc;
	
	public static void main(String[] args) throws Exception {
		DOMStudy domStudy=new DOMStudy();
		domStudy.genDocInstance();
		domStudy.genDocument();
		domStudy.printDoc();
		domStudy.modifyNode();
		domStudy.printDoc();;
		domStudy.removeNode();
		domStudy.printDoc();
		domStudy.replaceNode();
		domStudy.printDoc();
		domStudy.removeAttribute();
		domStudy.printDoc();
	}
	
	
	private void genDocInstance(){
		System.out.println("build a document instance...");
		
		try{
			DocumentBuilderFactory domFactory= DocumentBuilderFactory.newInstance();
			domFactory.setValidating(false);
			domFactory.setNamespaceAware(true);
			
			DocumentBuilder domBuilder=domFactory.newDocumentBuilder();
			domBuilder.setErrorHandler(new MyErrorHandler());
			doc=domBuilder.newDocument();
		}catch(Exception e){
			e.printStackTrace();
		}		
	}
	
	private void genDocument(){
		System.out.println("fill the content of the document.....");
		
		Element root=doc.createElement("student");
		root.setAttribute("id", "001");
		Element item=doc.createElement("name");
		item.appendChild(doc.createTextNode("jeff"));
		root.appendChild(item);
		
		item=doc.createElement("age");
		item.appendChild(doc.createTextNode("24"));
		root.appendChild(item);
		
		item=doc.createElement("height");
		item.appendChild(doc.createTextNode("1.70"));
		root.appendChild(item);
		
		item=doc.createElement("classId");
		item.appendChild(doc.createTextNode("2010212160006"));
		root.appendChild(item);
		
		
		item=doc.createElement("address");		
		Element state=doc.createElement("state");
		state.appendChild(doc.createTextNode("beijing"));		
		Element city=doc.createElement("city");
		city.appendChild(doc.createTextNode("beijing"));		
		Element street=doc.createElement("street");
		street.appendChild(doc.createTextNode("fuxing road"));		
		item.appendChild(state);
		item.appendChild(city);
		item.appendChild(street);
		root.appendChild(item);
		
	    doc.appendChild(root);		
	}
	
	private void printDoc()throws Exception{
		System.out.println("====================");
		System.out.println("print the document....");
		OutputFormat outFormat=new OutputFormat(doc);
		StringWriter stringout=new StringWriter();
		
		XMLSerializer serial=new XMLSerializer(stringout,outFormat);
		serial.asDOMSerializer();
		
		serial.serialize(doc.getDocumentElement());
		System.out.println("STRXML ="+stringout.toString());
		
		
	}
	private void modifyNode(){
		System.out.println("modify the node value....");
		Element root=doc.getDocumentElement();
		Element name=(Element) root.getFirstChild();
		name.getFirstChild().setNodeValue("hesihua");		
	}
	
	private void removeNode(){
		System.out.println("remove the node....");
		Element root=doc.getDocumentElement();
		root.removeChild(root.getFirstChild().getNextSibling());		
	}

	private void replaceNode(){
		System.out.println("replace a node.....");
		Element root=doc.getDocumentElement();
		Element item=doc.createElement("profession");
		item.appendChild(doc.createTextNode("software"));
		root.replaceChild(item, root.getFirstChild());		
	}
	
	private void removeAttribute(){
		System.out.println("remove a attribute");
		Element root=doc.getDocumentElement();
		root.removeAttribute("id");
		
	}
}

 

上面的代码在运行后得到的结果如下:

build a document instance...
fill the content of the document.....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><name>jeff</name><age>24</age><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
modify the node value....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><name>hesihua</name><age>24</age><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
remove the node....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><name>hesihua</name><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
replace a node.....
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student id="001"><profession>software</profession><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>
remove a attribute
====================
print the document....
STRXML =<?xml version="1.0" encoding="UTF-8"?>
<student><profession>software</profession><height>1.70</height><classId>2010212160006</classId><address><state>beijing</state><city>beijing</city><street>fuxing road</street></address></student>

 

真觉得DOM解析很强大...

 

分享到:
评论

相关推荐

    JavaScript DOM编程艺术.pdf

    JavaScript DOM编程艺术 --全

    JavaScriptDOM编程艺术(第2版)PDF版本下载.txt

    JavaScriptDOM编程艺术(第2版)PDF版本下载

    js+dom编程艺术资源

    《JavaScript DOM编程艺术:第2版》讲述了JavaScript、DOM 和HTML5 的基础知识,着重介绍DOM 编程技术背后的思路和原则:平稳退化、渐进增强和以用户...《JavaScript DOM编程艺术:第2版》适合Web 设计师和开发人员阅读。

    经典之作javascript dom编程艺术源码

    经典之作《javascript dom编程艺术》源码。通过一个实际案例,讲述了原生的javascript操作dom的使用方法,以及操作dom中应该注意的一些事项。

    JavaScript DOM编程艺术

    本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,使...

    JavaScript.DOM编程艺术(第2版)附录及源码.rar

    JavaScript.DOM编程艺术(第2版)附录及源码,JavaScript.DOM编程艺术(第2版)附录及源码

    JavaScript.DOM编程艺术(第2版) 2-4

    《javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以... 《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅读。

    JavaScript+DOM编程艺术.pdf

    《javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以用户...《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅读。

    javaScript-DOM编程艺术

    javaScript-DOM编程艺术javaScript-DOM编程艺术javaScript-DOM编程艺术javaScript-DOM编程艺术

    JavaScript_DOM编程艺术第二版(中文)

    JavaScript_DOM编程艺术第二版(中文),欢迎下载,111111111111111111111

    JavaScript Dom编程艺术

    JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术JavaScript Dom编程艺术

    [JavaScript.DOM编程艺术(第2版)+源码

    javascript dom编程艺术:第2版》讲述了javascript、dom 和html5 的基础知识,着重介绍dom 编程技术背后的思路和原则:平稳退化、渐进增强和以用户... 《javascript dom编程艺术:第2版》适合web 设计师和开发人员阅读。

    JavaScriptDOM编程艺术源代码

    本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,使...

    JavaScriptDOM编程艺术.中文版.完整书签

    JavaScriptDOM编程艺术.中文版.完整书签  本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书...

    JavaScript DOM编程艺术【第2版&高清】.pdf

    JavaScript DOM编程艺术,高清资源,无比经典,值得拥有

    DOM编程艺术 书+源码

    DOM编程艺术 书+源码

    JavaScript DOM编程艺术 第2版.pdf

    本书讲述了JavaScript和DOM的基础知识,但重点放在DOM编程技术背后的思路和原则:预留退路、循序渐进和以用户为中心等,这些概念对于任何前端Web开发工作都非常重要。本书将这些概念贯穿在书中的所有代码示例中,使...

    JavaScript DOM编程艺术 第2版.pdf 第二部分

    JavaScript DOM编程艺术 第2版.zip.002 由于上传文件大小的限制,故分成两个压缩卷,请查找对应的第一部分 学习Javascript用《JavaScript DOM编程艺术》来入门最好不过了,老老实实看两遍,看完了你就会对JS有一个...

    JSDOM编程艺术代码.7z

    JavaScript.DOM编程艺术(第2版)源码

    avaScript+DOM编程艺术+清晰中文版.rar

    JavaScript+DOM编程艺术+清晰中文版 网页前端工程师的入门级图书 网页设计的必备书籍

Global site tag (gtag.js) - Google Analytics