`
qq1988627
  • 浏览: 107350 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

XML文件解析

 
阅读更多
package com.atom.util;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import com.atom.basic.columntree.ColumnTree;
import com.atom.biz.base.calendar.bean.CalenderNode;
import com.atom.biz.base.setup.BaseSetupNode;

/**
 * <p>
 * 操作xml文件类
 * </p>
 * xml 文件格式为
 * 
 * <tables><table><col name="" value="" /><col name="" value="" /></table><table></table></tables>
 * 
 * @author KHT * @version $Id: XmlUtil.java,v 0.1 2009-2-22 下午10:49:02  */

public class XmlUtil {

	/**
	 * <p>
	 * 读取数据的xml文件
	 * </p>
	 * 
	 * @author Jack Zhou
	 * @version $Id: XmlUtil.java,	 */
	@SuppressWarnings("unchecked")
	public static List<BaseSetupNode> readBaseNodes(String path) {
		List<BaseSetupNode> list = new ArrayList<BaseSetupNode>();
		SAXReader reader = new SAXReader();
		Document doc = null;
		String leaf = "";
		try {
			// 读取文件
			File in = new File(path);
			doc = reader.read(in);
			Element root = doc.getRootElement();
			List<Element> eles = root.elements("nodes");
			List<Element> cols = null;
			for (Element ele : eles) {
				cols = ele.elements();
				for (Element element : cols) {
					BaseSetupNode node = new BaseSetupNode();
					node.setFz(element.attributeValue("fz"));
					node.setMc(element.attributeValue("mc"));
					node.setSm(element.attributeValue("sm"));
					leaf = element.attributeValue("leaf");
					node.setUiProvider("col");
					node.setId(element.attributeValue("id"));
					node.setParentId(element.attributeValue("parantid"));
					node.setHref(element.attributeValue("href"));
					if ("".equals(leaf) || "0".equals(leaf)) {
						node.setLeaf(false);
						node.setIconCls("task");
					} else {
						node.setLeaf(true);
						node.setIconCls("task-folder");
					}
					list.add(node);
				}
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return list;
	}

	public static List<CalenderNode> readCalenderNodes(String path) {
		List<CalenderNode> list = new ArrayList<CalenderNode>();
		SAXReader reader = new SAXReader();
		Document doc = null;
		String leaf = "";
		try {
			// 读取文件
			File in = new File(path);
			doc = reader.read(in);
			Element root = doc.getRootElement();
			List<Element> eles = root.elements("nodes");
			List<Element> cols = null;
			String isv = "";
			for (Element ele : eles) {
				cols = ele.elements();
				for (Element element : cols) {
					CalenderNode node = new CalenderNode();
					node.setDateType(element.attributeValue("dateType"));
					node.setDateName(element.attributeValue("dateName"));
					node.setDate(element.attributeValue("date"));
					node.setMemo(element.attributeValue("memo"));
					isv = element.attributeValue("visible");
					if (!StringUtil.isEmpty(isv))
						node
								.setVisible("<img src='/public/images/Checkmark4.gif' />");
					else
						node.setVisible("-");
					leaf = element.attributeValue("leaf");
					node.setUiProvider("col");
					node.setId(element.attributeValue("id"));
					node.setParentId(element.attributeValue("parantid"));
					node.setHref(element.attributeValue("href"));
					if ("".equals(leaf) || "0".equals(leaf)) {
						node.setLeaf(false);
						node.setIconCls("task");
					} else {
						node.setLeaf(true);
						node.setIconCls("task-folder");
					}
					list.add(node);
				}
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return list;
	}

	@SuppressWarnings("unchecked")
	public List<Map<String, String>> readMapTest() {
		List<Map<String, String>> list = new ArrayList<Map<String, String>>();
		String path = this.getClass().getResource("/").getPath()
				+ "/xml/test.xml";
		SAXReader reader = new SAXReader();
		Document doc = null;
		try {
			// 读取文件
			File in = new File(path);
			doc = reader.read(in);
			Element root = doc.getRootElement();
			List<Element> eles = root.elements("nodes");
			List<Element> cols = null;
			for (Element ele : eles) {
				cols = ele.elements();
				for (Element element : cols) {
					Map<String, String> map = new HashMap<String, String>();
					map.put("childrows", element.attributeValue("childrows"));
					map.put("hc0", element.attributeValue("hc0"));
					map.put("hc1", element.attributeValue("hc1"));
					map.put("hc2", element.attributeValue("hc2"));
					map.put("hc3", element.attributeValue("hc3"));
					map.put("hasnote", element.attributeValue("hasnote"));
					map.put("urid", element.attributeValue("urid"));
					map.put("entityid", element.attributeValue("entityid"));
					map.put("bankid", element.attributeValue("bankid"));
					list.add(map);
				}
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		return list;
	}

	public static void main(String[] args) {
		XmlUtil xml = new XmlUtil();
		String path = xml.getClass().getResource("/").getPath();
		List<BaseSetupNode> nodes = XmlUtil.readBaseNodes(path
				+ "/xml/base.xml");
		ColumnTree t = new ColumnTree();
		System.out.println(t.getJsonString(nodes));
		// System.out.println(nodes.size());
		// System.out.println(path);

	}

}
分享到:
评论

相关推荐

    XML文档解析相关工具

    2. **SAX解析**:除了DOM,dom4j还支持SAX(Simple API for XML)解析器,适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 3. **XPath支持**:dom4j内置了XPath引擎,可以使用XPath表达式方便地定位...

    用C++语言实现XML文件解析的一种方案

    ### 用C++语言实现XML文件解析的一种方案 #### 概述 随着互联网技术的不断发展,XML(可扩展标记语言)作为一种重要的数据交换格式,在各领域中的应用日益广泛。XML以其良好的可读性和开放性成为了数据共享的标准...

    C++ XML文件解析库 tinyxml2

    1. **XML解析**:TinyXML2通过`XMLDocument`类来表示整个XML文档,你可以使用`LoadFile()`或`Parse()`方法加载XML文件或内存中的XML字符串。解析完成后,文档的结构被映射为一系列的节点,包括元素(XMLElement)、...

    XML文件解析代码

    XML文件解析工具类

    C写的解析xml文件源代码

    本文将深入探讨使用C语言编写的XML文件解析源码,并讲解如何实现XML文件的基本操作,如查找、增加和删除节点。 在C语言中处理XML文件通常涉及到以下几个关键步骤: 1. **内存管理**:由于C语言没有内置的高级数据...

    XML文件解析问题.pdf

    XML 文件解析问题 XML 文件解析是指将 XML 文件转换为可被计算机理解和处理的格式。XML 文件解析问题是指在解析 XML 文件时遇到的问题,例如解析速度慢、内存占用高、解析错误等。 在 XML 文件解析中,主要有两种...

    Tinyxml文件解析经典例子

    Tinyxml 文件解析经典例子 TinyXML 是一个开源的解析 XML 的解析库,能够用于 C++,能够在 Windows 或 Linux 中编译。这个解析库的模型通过解析 XML 文件,然后在内存中生成 DOM 模型,从而让我们很方便的遍历这棵...

    xml 文件解析专题

    在IT行业中,XML文件解析是一项基础且重要的技能,尤其在数据交换、配置文件、Web服务等领域有着广泛的应用。本专题将深入探讨XML文件解析的相关知识点。 一、XML基本结构 XML文档由元素(Elements)、属性...

    xml.rar_XML 文档 解析_XML 解析_XML文档

    这个"xml.rar"压缩包包含了一系列与XML文档解析相关的源代码文件,对于初学者来说,是理解XML解析机制的一个很好的实例。 1. **XML文档结构**: XML文档由一系列元素组成,每个元素通过开始标签 `&lt;tag&gt;` 和结束...

    VC xml文件解析类

    C++作为一款强大的编程语言,虽然原生并不支持XML处理,但可以通过第三方库或者自定义类来实现XML文件的解析和读取。"VC XML文件解析类"就是这样的一个实现,它提供了C++程序员处理XML文件的能力。 首先,我们来看`...

    XmlPullParser解析Xml文件解析demo

    XmlPullParser是Android系统提供的一种解析XML文件的API,它是一种基于事件驱动的解析方式,能够高效、节省资源地处理XML文档。在这个“XmlPullParser解析Xml文件解析demo”中,我们将探讨如何利用XmlPullParser来...

    xml文件解析工厂

    XML文件解析工厂则是处理XML文档的核心工具,它简化了对XML数据的操作,使得开发者能够更加高效地读取、写入和处理XML内容。 在Java中,XML文件解析主要有DOM(Document Object Model)、SAX(Simple API for XML)...

    xml文件解析源码

    TinyXML和TinyXML2是两个小型、轻量级的C++库,专门用于解析和操作XML文件。它们提供了简单的API,使得开发者能够方便地读取、修改和创建XML文档。 TinyXML库是最初的版本,它为XML解析提供了一个易于使用的接口。 ...

    基于C++的xml文档解析器源代码

    本资源提供了基于C++的XML文档解析器的源代码,涵盖了读取、遍历、查找、插入和保存等基本功能,对于学习和理解XML解析原理以及C++编程技巧具有很高的参考价值。 首先,XML文档的基本结构包括元素(Element)、属性...

    XML文件解析编辑小工具

    "XML文件解析编辑小工具",如firstobject xml editor 2.4,是一款专为XML文档设计的轻量级编辑器,提供了对XML文件的深度解析和编辑功能。 这款工具的特色在于其绿色小巧的特性,意味着它无需安装即可使用,占用...

    基于QT的XML文件解析器

    QDomDocument提供了一个完整的DOM(文档对象模型)解析器,它将整个XML文件加载到内存中,形成一棵树形结构,便于遍历和操作。而QXmlStreamReader则采用事件驱动的方式,逐行读取XML文件,适用于处理大文件或需要低...

    java xml文件解析

    在Java中,有多种解析XML文件的方式,包括DOM (Document Object Model)、SAX (Simple API for XML) 和 DOM4J。这些方法各有优势和局限性,选择哪一种取决于具体的应用场景和需求。 #### 二、DOM 解析方式 DOM 解析...

    pomxml文件解析

    pomxml文件解析pomxml文件解析pomxml文件解析

    四中最常用的XML文件解析总结.doc

    对于XML文件的解析,掌握几种常用的方法是至关重要的。根据给定文件的信息,我们将深入探讨四种最常用的XML文件解析技术:DOM(Document Object Model)、SAX(Simple API for XML)、STAX(Streaming API for XML)...

    xml解析文件的两种方式

    - 内存消耗大:对于大型XML文件,DOM可能会消耗大量内存,因为它需要一次性加载整个文档。 - 性能问题:由于需要构建完整的DOM树,解析速度相对较慢。 **2. SAX解析** SAX(Simple API for XML)是一种事件驱动的...

Global site tag (gtag.js) - Google Analytics