`
jingliankui123
  • 浏览: 104785 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

读xml

    博客分类:
  • java
阅读更多
/**
 * @#ConstantDAO.java
 * Copyright (C) 2009-2010 HereOnline Corporation
 */
package cn.com.hereonline.admin.dao;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

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

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

import cn.com.hereonline.admin.common.Common;

/**
 * IConstantDAO的实现类
 * @author HereOnLine Corporation
 * @version 01 jun 28, 2009 作成
 */

public class ConstantDAO extends BaseDAO implements IConstantDAO {
	  
	File _FILEPATH = null;
	/**批量查询**/  
	public List<Constant> searchPerson() {  
		List<Constant> list = new ArrayList<Constant>();
		try {
			
			Element root = initDoc().getDocumentElement();
			NodeList pList = null;
			pList = root.getElementsByTagName("Constant");
			
			for (int i = 0; i < pList.getLength(); i++) {
				Element pE = (Element) pList.item(i);
				Constant person = new Constant();
				NodeList ids = pE.getElementsByTagName("value");
				if (ids.getLength() == 1) {
					Element e = (Element) ids.item(0);
					Text t = (Text) e.getFirstChild();
					person.setValue(t.getNodeValue());
				}
				NodeList names = pE.getElementsByTagName("name");
				if (names.getLength() == 1) {
					Element e = (Element) names.item(0);
					Text t = (Text) e.getFirstChild();
					person.setName(t.getNodeValue());
				}
				
				NodeList desc = pE.getElementsByTagName("desc");
				if(desc.getLength()==1){
                   Element e = (Element) desc.item(0);
                   Text t = (Text) e.getFirstChild();
                   person.setDesc(t.getNodeValue());
				}
				
				list.add(person);
			}
			
		} catch (Exception e) {
			System.out.println("ERROR!");
		}
		return list;
	}

	/**添加常量**/
	public void insertPerson(Constant p) {
		try {
			Document document = initDoc();
			Element root = document.getDocumentElement();
			Element person = null;
			person =  document.createElement("Constant");
			
			Element id = document.createElement("value");
			person.appendChild(id);
			Text tId = document.createTextNode(p.getValue());
			id.appendChild(tId);
			Element name = document.createElement("name");
			person.appendChild(name);
			Text tName = document.createTextNode(p.getName());
			name.appendChild(tName);

			root.appendChild(person);
			commitTransformer(document);
			//closeIO(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ERROR!");
		} catch (SAXException e) {
			System.out.println("ERROR!");
		} catch (IOException e) {
			System.out.println("ERROR!");
		} catch (Exception e) {
			System.out.println("ERROR!");
		}
	}

	/**关闭IO**/
	private void closeIO(Document document) throws IOException {
		FileOutputStream outStream = new FileOutputStream("constant.xml");
		OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
		outWriter.close();
		outStream.close();
	}

	/**删除常量**/
	public void deletePerson(Constant p) {
		try {
			Document document = initDoc();
			NodeList pList = null ;
			Node del;
			pList = document.getElementsByTagName("Constant");
			
			for (int i = 0; i < pList.getLength(); i++) {
				Element element = (Element) pList.item(i);
				NodeList ids = element.getElementsByTagName("name");

				if (ids.getLength() == 1) {
					Element e = (Element) ids.item(0);
					Text t = (Text) e.getFirstChild();
					if (t.getNodeValue().equals(p.getName())) {
						del = (Node) element;
						element.getParentNode().removeChild(del);
					}
				}
			}
			commitTransformer(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfigurationException");
		} catch (SAXException e) {
			System.out.println("SAXException");
		} catch (IOException e) {
			System.out.println("IOException");
		} catch (TransformerException e) {
			System.out.println("TransformerException");
		} catch (Exception e) {
			System.out.println("Exception");
		}
	}

	/**更新常量**/
	public void updatePerson(Constant p) {
		try {
			Document document = initDoc();
			
			NodeList pList = null;
			
			pList = document.getElementsByTagName("Constant");
			Element e;
			Text t;

			for (int i = 0; i < pList.getLength(); i++) {
				Element element = (Element) pList.item(i);
				NodeList names = element.getElementsByTagName("name");

				if (names.getLength() == 1) {
					e = (Element) names.item(0);
					t = (Text) e.getFirstChild();
					if (t.getNodeValue().equals(p.getName())) {
						NodeList values = element.getElementsByTagName("value");
						if (values.getLength() == 1) {
							e = (Element) values.item(0);
							t = (Text) e.getFirstChild();
							t.setNodeValue(p.getValue());
						}

					}
				}
			}
			commitTransformer(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfigurationException");
		} catch (SAXException e) {
			System.out.println("SAXException");
		} catch (IOException e) {
			System.out.println("IOException");
		} catch (TransformerException e) {
			System.out.println("TransformerException");
		} catch (Exception e) {
			System.out.println("Exception");
		}
	}

	/**提交操作**/
	private void commitTransformer(Document document) throws Exception {
		TransformerFactory tFactory = TransformerFactory.newInstance();
		Transformer transformer = tFactory.newTransformer();
		DOMSource source = new DOMSource(document);
		StreamResult result = new StreamResult(this._FILEPATH);
		transformer.transform(source, result);
	}

	/**初使化文档**/
	private Document initDoc() throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = null;
		 if(Common.isLinux()){
			  String path = Thread.currentThread().getContextClassLoader().getResource("constant_server.xml").getFile();
			 _FILEPATH = new File(path);
		 }else{//
			  String path = Thread.currentThread().getContextClassLoader().getResource("constant_local.xml").getFile();
			 _FILEPATH = new File(path);
		 }
		 
		try{
			document = builder.parse(this._FILEPATH);
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		return document;
	}

	/**取单个值**/
	public String getNode(String name) {
		try {
			Document document = initDoc();
			NodeList pList = null;
			
			pList = document.getElementsByTagName("Constant");
			
			for (int i = 0; i < pList.getLength(); i++) {
				Element element = (Element) pList.item(i);
				NodeList ids = element.getElementsByTagName("name");
				if (ids.getLength() == 1) {
					Element e = (Element) ids.item(0);
					Text t = (Text) e.getFirstChild();
					if (t.getNodeValue().trim().equals(name)) {
						NodeList values = element.getElementsByTagName("value");
						if (values.getLength() == 1) {
							e = (Element) values.item(0);
							t = (Text) e.getFirstChild();
							return t.getNodeValue();
						}
					}
				}
			}
			commitTransformer(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfigurationException");
		} catch (SAXException e) {
			System.out.println("SAXException");
		} catch (IOException e) {
			System.out.println("IOException");
		} catch (TransformerException e) {
			System.out.println("TransformerException");
		} catch (Exception e) {
			System.out.println("Exception");
		}
		return null;
	}
}

 

分享到:
评论

相关推荐

    vb读xml到表格

    标题中的“vb读xml到表格”指的是使用Visual Basic (VB) 这种编程语言来解析XML文件,并将数据展示在表格控件(如DataGrid或ListView)中。XML(eXtensible Markup Language)是一种用于存储和传输结构化数据的标准...

    matlab读xml文档

    在提供的压缩包文件"matlab读xml实例"中,可能包含了一个脚本文件(例如,`read_xml_script.m`)和一个函数文件(例如,`parse_xml.m`)。脚本文件可能是用来调用函数并展示如何使用MATLAB读取XML的示例,而函数文件...

    python 读xml文件

    python 读xml并提取相关信息,python 读xml文件并提取相关信息

    C#winform读xml源码(适合新手)

    C#winform读xml源码(适合新手)http://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html跟着这个教程做的,网址中有不少小错误会让新手比较抓狂,所以附上源码给各位新手,希望你能帮到大家。

    C++读xml文件

    在C++编程中,处理XML(可扩展标记语言)文件是一项常见的任务,它通常用于存储数据、配置信息或跨平台的数据交换。XML文件结构清晰,易于解析,因此被广泛采用。本篇文章将深入探讨如何使用C++来读取XML文件。 ...

    vc读xml数据,简单实用。

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、自解释性和平台无关性而被广泛应用于软件开发中,包括在VC++(Visual C++)环境中。本文将深入探讨如何在VC++项目中读取XML...

    xls快捷读xml三方法

    当我们需要将XML数据导入到Excel以便进行数据分析或处理时,可能会遇到“xls快捷读xml”的需求。这里我们将详细探讨三种常用的方法来实现这一目标。 方法一:使用Excel的XML数据导入功能 1. 打开Excel,选择“数据...

    JS读XML例子

    在“JS读XML例子”中,我们有两个核心文件:`docxml.html`和`doc.xml`。`docxml.html`是一个HTML文件,其中包含JavaScript代码,用于读取和解析`doc.xml`中的数据。`doc.xml`则是包含结构化数据的XML文件。 首先,...

    java读xml文件

    if(property!=null){ for(int i=0;i();i++){ Node stroke=property.item(i); //if(stroke.getNodeType()==Node.ELEMENT_NODE){ //(7)取得节点的属性值 String strokeOrderID=stroke.getAttributes()....

    读XML的程序

    本项目是一个C语言编写的XML解析器,名为"读XML的程序",其目标是能够读取和解析XML文件,提取其中的数据。 XML文件由一系列元素组成,每个元素都有一个开始标签和结束标签,如`&lt;tag&gt;`和`&lt;/tag&gt;`,元素内可以包含...

    Android 读XML项目源码

    这个"Android 读XML项目源码"是一个完整的Android应用项目,旨在演示如何解析XML文件并从中提取数据。以下是这个项目可能包含的关键知识点和详细说明: 1. **XML解析方式**: - **DOM解析器**:一次性加载整个XML...

    使用Sax方法读XML文档:SaxReaderXML.zip

    标题“使用Sax方法读XML文档:SaxReaderXML.zip”指出,这个压缩包包含了一个关于如何使用SAX解析器来读取XML文档的示例。SAX解析器的工作方式是,当解析到XML文档中的某个元素、属性或文本时,会触发相应的事件,...

    flash读xml

    ### Flash读取XML知识点解析 #### 一、Flash与XML集成概述 在早期的Web开发中,Flash作为一种广泛使用的多媒体技术,在网页上呈现动画、视频等动态内容方面扮演着重要角色。随着网络应用的需求日益复杂,Flash需要...

    dom4j 读xml灰藏有用的jar包

    这篇名为“dom4j 读xml灰藏有用的jar包”的博客文章可能详细介绍了如何利用DOM4J来读取和操作XML文件,而“student.xml”可能是博主用于示例的一个XML文件。 在处理XML时,DOM4J主要有以下几个关键知识点: 1. **...

    java读xml

    总结来说,"java读xml"这个主题涵盖了Java中处理XML文件的基础知识,包括使用DOM、SAX解析器,以及可能涉及到的第三方库和工具。理解这些内容对于任何Java开发者来说都是必要的,因为XML在许多系统集成和数据交换...

    Visual basic 6.0 的读XML文件代码

    在Visual Basic 6.0(VB6)中处理XML文件是一项常见的任务,特别是在与Web服务交互或存储结构化数据时。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,具有良好的可读性和跨平台兼容性。下面将详细介绍...

    Delphi读TXT生成TXT、读TXT生成XML、读XML生成TXT

    `XmlToVds`在这个阶段的角色可能是从已有的XML文件中提取数据,并将其格式化为用户可读的TXT文件。 在实际应用中,这样的工具对于数据迁移、数据格式转换以及不同系统间的数据交互非常有用。例如,如果你有一个大量...

    Qt读xml的一个简单实例

    在IT行业中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,它具有良好的结构化和可扩展性,常用于存储和传输数据。Qt是一个跨平台的C++库,提供了丰富的功能,包括对XML文件的处理。本实例将...

    Linux 下读XML 的类详解及实现代码

    总结来说,这个简单的Linux下读XML的类通过自定义的解析逻辑,实现了对XML文件的读取和解析。它允许开发者查找XML文档中的特定元素,获取元素的属性,并且可以遍历整个XML文档的结构。虽然这个实现可能不如成熟的XML...

Global site tag (gtag.js) - Google Analytics