`
wj196
  • 浏览: 298475 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

读取xml文件

    博客分类:
  • java
阅读更多
xml源文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<memcaches version="1">
	<memcache type="AAAA">
		<ip>11.11.1.244:11211</ip>
		<prefix>aaaa_</prefix>
	</memcache>
	<memcache type="BBBB">
		<ip>11.22.1.243:11211</ip>
		<prefix>bbbb_</prefix>
	</memcache>
	<memcache type="CCCC">
		<ip>11.33.33.152:11211</ip>
		<prefix>cccc_</prefix>
	</memcache>
	<memcache type="DDDD">
		<ip>11.44.15.244:11211</ip>
		<prefix>dddd_</prefix>
	</memcache>
	<memcache type="EEEEEEE">
		<ip>11.66.16.152:11211</ip>
		<prefix>eeeee_</prefix>
	</memcache>
	<memcache type="FFFFF">
		<ip>11.77.170.152:11211</ip>
		<prefix>fffff_</prefix>
	</memcache>
</memcaches>


解析上面xml文件的java代码:


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.*; //Java基础包,包含各种IO操作
import java.util.*; //Java基础包,包含各种标准数据结构操作
import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*;

import com.happyelements.apollo.config.type.AppType;
import com.happyelements.apollo.util.ApolloCollectionsUtil;

public class ParseMemXML {

	public static final Map<String, MemBean> memMap = ApolloCollectionsUtil.newMap();//将MemBean放到map中存放

//解析xml文件并将得到的实例放入map中
	public static void initXMLFile(String filename) throws Exception {
		// 为解析xml做准备
		// 创建DocumentBuilderFactory实例,指定DocumentBuilder
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder db = null;
		try {
			db = dbf.newDocumentBuilder();
		} catch (ParserConfigurationException pce) {
			System.out.println(pce);
			// 出异常时输出异常信息,然后退出,下同
			System.exit(1);
		}
		Document doc = null;
		try {
			doc = db.parse(filename);
		} catch (DOMException dom) {
			System.err.println(dom.getMessage());
			System.exit(1);
		} catch (IOException ioe) {
			System.err.println(ioe);
			System.exit(1);
		}

		// 下面是解析XML的全过程,
		// 比较简单,先取根元素"memcaches"
		Element root = doc.getDocumentElement();
		// 取"memcache"元素列表
		NodeList memcaches = root.getElementsByTagName("memcache");
		for (int i = 0; i < memcaches.getLength(); i++) {
			// 创建一个memcache的Bean实例
                      MemBean memBean = new MemBean();
			// 依次取每个"memcache"元素
			Element memcache = (Element) memcaches.item(i);
			// 取memcache的type属性
			memBean.setType(memcache.getAttribute("type"));
			// 取"ip"元素,下面类同
			NodeList ips = memcache.getElementsByTagName("ip");
			if (ips.getLength() == 1) {
				Element e = (Element) ips.item(0);
				Text t = (Text) e.getFirstChild();
				memBean.setIp(t.getNodeValue());
				System.out.println(memBean.getIp());
			}
			NodeList prefixs = memcache.getElementsByTagName("prefix");
			if (prefixs.getLength() == 1) {
				Element e = (Element) prefixs.item(0);
				Text t = (Text) e.getFirstChild();
				memBean.setPrefix(t.getNodeValue());
				System.out.println(memBean.getPrefix());
			}
			memMap.put(memBean.getType().toString(), memBean);
		}
	}

	public static void main(String[] args) throws Exception {
		ParseMemXML.initXMLFile("E:\\workplace\\Tool2\\WebRoot\\WEB-INF\\memconf.xml");
		System.out.println(ParseMemXML.memMap.size());
		MemBean memBean = ParseMemXML.memMap.get(AppType.AAAA.toString());
		System.out.println("ip=====" + memBean.getIp());
		System.out.println("prefix===" + memBean.getPrefix());

	}
}



MemBean的java源文件

import java.io.Serializable;

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root(name = "memconf")
public class MemBean implements Serializable {

	private static final long serialVersionUID = 2209681159359089305L;

	@Attribute
	private String type;
	@Element
	private String ip;
	@Element
	private String prefix;

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getIp() {
		return ip;
	}

	public void setIp(String ip) {
		this.ip = ip;
	}

	public String getPrefix() {
		return prefix;
	}

	public void setPrefix(String prefix) {
		this.prefix = prefix;
	}

}




AppType源文件

public enum AppType {
AAAA,
BBBB,
CCCC,
DDDD,
EEEE,
FFFF,

;
}

分享到:
评论
11 楼 wj196 2010-12-20  
谢谢各位给的评论啊,我确实是个新手,懂得不多,自己做完,总结的小东东。不要见笑哦。
10 楼 xiaoxin5230 2010-12-17  
可以参考一下我之前用dom4j解析xml写的一个通用类:http://xiayingjie.iteye.com/blog/795891
9 楼 181054867 2010-12-17  
dom4j才是最好的xml解析工具
8 楼 flyingzl 2010-12-17  
呵呵。。用的xml还是memcached的配置文件,哈哈。
7 楼 lancelotly 2010-12-17  
建议楼主使用xpath在做一次,然后总结下。
6 楼 褚晓娜(0511) 2010-12-17  
刚看了一下jdk才知道了Java解析xml,嘿嘿。学习了
非常感谢
5 楼 褚晓娜(0511) 2010-12-17  
这是通过那种方式来读xml文件?
4 楼 小小流浪猪 2010-12-16  
呵呵 此贴很快就会被评为新手帖了
3 楼 hellostory 2010-12-16  
apple307878412 写道
hey 难得啊 烟台的姐们呵呵

头像为女生的未必是真正的女人,都是浮云啊!
2 楼 whaosoft 2010-12-16  
唉 从此贴可见又要有实习的了
1 楼 apple307878412 2010-12-16  
hey 难得啊 烟台的姐们呵呵

相关推荐

    pb下读写xml文件的例子.rar_pb_pb 读取xml_pb 读取xml文件_pb9 xml_pb下读写xml文件的例子

    本示例主要探讨如何在PowerBuilder 9(PB9)中进行XML文件的读取和写入操作。 首先,我们需要了解PowerBuilder中的XML支持。PB9引入了对XML的支持,包括XMLDocument对象和DOM解析器,使得开发者能够方便地与XML数据...

    C# WinForm 读写XML文件

    在C# WinForm应用程序中,读写XML文件是常见的数据操作任务。XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,它结构清晰、易于解析且跨平台。下面将详细介绍如何使用C# WinForm来实现XML...

    xml.zip_matlab读取xml文件实例_xml文件读取

    `xmlread`用于读取XML文件并将其转换为一个文档对象模型(DOM)树,而`xmlwrite`则可以将DOM树写回到XML文件。DOM树是一种数据结构,它代表了XML文件的整个内容,允许我们遍历和修改文件的各个部分。 例如,假设...

    js读取xml文件并获取文件内容

    ### JS读取XML文件并获取文件内容 #### 知识点概述 在现代Web开发中,JavaScript(简称JS)常被用于处理各种数据格式,包括XML。XML(可扩展标记语言)是一种常用的标记语言,主要用于结构化数据的存储与传输。...

    读取XML文件的四种方法

    优点:SAX方法提供了高效的XML解析方式,不需要将整个XML文档加载到内存中,适合大型XML文件的读取。 缺点:SAX方法需要实现事件处理器,编程较为复杂。 读取XML文件有多种方法,每种方法都有其优缺点。选择合适的...

    Qt读写Xml文件(QTreeWidget加载显示Xml文件内容;QTreeWidget项导出保存为Xml)

    通过以上步骤,我们已经掌握了如何在Qt中使用QTreeWidget读写XML文件以及实现拖放功能。这些技能对于开发任何涉及XML数据操作和用户界面交互的Qt应用都是非常有价值的。在实际项目中,可能还需要根据具体需求对代码...

    使用tinyxml 读写xml文件方法

    在本文中,我们将深入探讨如何使用 TinyXML 来读写 XML 文件,以及它在 Visual C++ 开发环境中的应用。 1. **TinyXML 的基本结构** TinyXML 提供了一系列类来表示 XML 文档的不同部分,如 `TiXmlDocument`(XML ...

    javascript读写XML文件

    ### JavaScript读写XML文件:深度解析与应用实例 在现代Web开发中,XML(Extensible Markup Language)作为一种标准的数据交换格式,被广泛应用于各种场景,如配置文件、数据传输等。利用JavaScript进行XML文件的...

    C++ 读写XML文件

    本项目"**C++ 读写XML文件**"是针对MFC(Microsoft Foundation Classes)框架的一个示例,展示了如何在C++环境中方便地操作XML文件。 首先,我们需要了解XML的基本结构。XML文件由元素(Element)、属性(Attribute...

    delphi读写XML文件

    首先,你需要导入System.XML读写XML文件所需的基本库。在Delphi中,可以使用TXMLDocument类来处理XML文档。以下是读取XML文件的基本步骤: 1. 创建TXMLDocument对象: ```delphi var XMLDoc: TXMLDocument; ...

    LabVIEW利用OLE自动化读写XML文件

    微软提供了MSXML2.0, 4.0 及 6.0动态链接库来支援开发人员读写XML文件。 而LabVIEW正可以通过OLE自动化接口,调用MSXML*.dll动态链接库,完成对XML文件的操作。如果你的系统没有安装MSXML*.dll,可以去网上下载并...

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    vb6XML读写

    vb中读写XML文件实例Dim XMLDoc As DOMDocument Dim root As IXMLDOMNode Dim xlst As IXMLDOMNodeList, xlst1 As IXMLDOMNodeList Dim xn As IXMLDOMNode Dim xnf As IXMLDOMNode Dim xe As IXMLDOMElement Set ...

    java读写xml文件

    ### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...

    如何读写XML文件,一个不错的实例

    在"实例118 如何读写XML文件"中,我们可以看到一个具体的代码示例,展示如何使用以上方法读取和写入XML文件。这个实例可能包括创建一个简单的XML文件,添加一些元素和属性,然后读取这些元素并打印它们的值,最后...

    labview读写XML文件

    通过以上介绍,你应该对LabVIEW如何读写XML文件有了全面了解。在实际应用中,你可以根据具体需求灵活运用这些技术,实现数据的存储和交换。不过,XML文件的复杂性意味着在处理大型或结构复杂的XML时,可能需要更高级...

    js 操作xml 文件 读取xml文件

    js 操作xml 文件 读取xml文件 js 操作xml 文件 读取xml文件

    VB读取XML文件

    ### VB读取XML文件知识点详解 #### 一、概述 在软件开发过程中,XML(可扩展标记语言)因其良好的结构化特性,在数据交换与存储方面得到了广泛应用。Visual Basic(简称VB),作为一款功能强大的编程语言,支持...

    perl读写xml文件

    这篇博客文章“perl读写xml文件”很可能是关于如何在Perl中操作XML文件,包括解析XML内容、提取数据、修改数据以及生成新的XML文件。 Perl提供了多个模块来处理XML,最常用的是XML::Simple和XML::LibXML。XML::...

    VC读写XML文件

    本教程将介绍如何使用MFC(Microsoft Foundation Classes)和MSXML库在VC++中读写XML文件。MSXML(Microsoft XML Core Services)是微软提供的一个用于解析和操作XML文档的库,它提供了IXMLDOMDocument接口,可以...

Global site tag (gtag.js) - Google Analytics