Java_xml_Dom解析实现增删改查

本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/12094775

1.Node准备

Node接口是整个文档对象模型的主要数据类型,它表示该文档树中的单个节点。例如Attr, CharacterData, Comment, Text,Element都是Node的子类。 xml解析的误区: 在xml文件解析过程中,所有信息都被当做一个对象,例如解析下面的语句

/*
 * AAAjava语法BBB
 * 该book下的直接子节点有3个,AAA和BBB被解析为CharacterData类型的节点,被解析为Element类型的节点,
 * 
 *  java语法 
 * 该book下的直接子节点有3个,由于在之前有个换行,CharacterData类型的节点
 * java语法 该book下的直接子节点只有1个
 */

2.Dom解析优缺点

优点:整个文档读入内存,方便操作:支持修改、删除和重现排列等多种功能。

缺点:将整个文档读入内存中,保留了过多的不需要的节点,浪费内存和空间。

3.Dom解析xml

/**
 * 解析xml文件,遍历并所有信息
 */
public static void parseXMl() {
	try {
	// 1.通过DocumentBuilder工厂得到对应的xml解析器
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();

	// 2.通过解析器得到Document对象
		Document doc = builder.parse("d:/my.xml");
		
	// 3.解析数据
	/*
	 * 
	 * 		javaWeb
	 * 		fanglx 
	 * 		30.90 
	 * 
	 */
		//得到所有的book的标签的nodelist
		NodeList nodeList = doc.getElementsByTagName("book");
		//遍历每个book节点
		for(int i=0; i/**
 * 对xml文件的更新
 */
public static void updateXMl() {
	try {
	// 1.通过DocumentBuilder工厂得到对应的xml解析器
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		
	// 2.通过解析器得到Document对象
		Document doc = builder.parse("d:/my.xml");
	
	// 3.更新数据
	/*
	 * 
	 * 		javaWeb
	 * 		fanglx 
	 * 		30.90 
	 * 
	 */
		NodeList nodeList = doc.getElementsByTagName("book");
		Element parentEle = (Element) nodeList.item(0);
		
		//直接在子标签的尾部增加25
		Element childEle = doc.createElement("num");
		childEle.setAttribute("id", "1001");//设置属性
		childEle.setTextContent("25");		//设置值	
		parentEle.appendChild(childEle);
		
		//直接在price标签前面增加mm
		Element newChild = doc.createElement("age");
		newChild.setAttribute("id", "25");	//设置属性
		newChild.setTextContent("mm");		//设置值
		Element refChild = (Element) parentEle.getElementsByTagName("price").item(0);
		parentEle.insertBefore(newChild, refChild);
		
	// 4.保存更新的数据
		TransformerFactory tFactory = TransformerFactory.newInstance();
		Transformer transformer = tFactory.newTransformer();
		transformer.transform(new DOMSource(doc), new StreamResult(new File("c:/my.xml")));
	} catch (Exception e) {
		e.printStackTrace();
	}
}

   
	   
		javaWeb    
		fanglx
		30.90      
	

你可能感兴趣的:(xml,Java,JavaWeb,Android,javaWeb基础详解,Java基础增强)