写了一个Java读取XML文件的工具类,做一下笔记!
2008-04-01 18:29
441 查看
.CodeFormat {font-family:"Courier New", Courier, mono; font-size:9pt; }如果我们有下面的一个XML文件,可以把它想象成一个Relation Database中的Table, 这个XML文件就是一个名字为managers的关系表,而一个所包含的就是一条记录(Record),而manager中的service和implementation就是一个个的栏位(Field) !
所以,在程序中,可以用类似Table Query的方式来读取XML节点(Node)上面的属性值!
按照下面的代码读取:
Source of XML Utility Class:
managers table | ||
+ | service | implementation |
net.csdn.blog.xport.IDBConnectionManager | net.csdn.blog.xport.impl.DBConnectionManagerCommonImpl | |
net.csdn.blog.xport.IDomainIdentify | net.csdn.blog.xport.impl.DomainIdentifyImpl |
<managers> |
// 查找以manager作为tag标记,属性中存在name且属性值为"DBConnectionManager"的 // XML节点, 并返回此节点的DOM Element对象! // 类似name字段为PK值,且name="DBConnectionManager" managerElement = XMLFileUtil.findElement(xmlDomContent.getRootElement(), "manager", "name", "DBConnectionManager"); if (managerElement != null) { //取得Element中的implementation属性对象... serviceImplElement = managerElement.element("implementation"); if (serviceImplElement != null) { //取这个属性的值... serviceImplClassString = serviceImplElement.getText(); } } |
/* * @(#)XMLFileUtil.java 1.0 2004/12/20 * * Copyright 2004 Shark Wang, All rights reserved. */ package net.csdn.blog.xport; import java.net.URL; import java.util.Iterator; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * The [code]XmlUtilclass supported your code to read/write xml * data from the file. all methods in this class depend on dom4j. * * @author Shark Wang * @version 1.0, 2004/12/20 * @since Tutorial 1.0 */ public class XMLFileUtil { private static Logger logger = LogManager.getLogger(XMLFileUtil.class); /** * read xml content from some file, and load xml data into the * Document object. * * @param filePath String * @return Document */ public static Document LoadXmlFile(String filePath) { /* marked by Shark Wang ***************************************************************** //get resolver to ignore the DTD validation EntityResolver resolver = new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) { return new InputSource(new StringBufferInputStream("")); } }; //create reader SAXReader reader = new SAXReader(); //set reader attribute to ignore DTD validation reader.setEntityResolver(resolver); reader.setValidation(false); reader.setIncludeExternalDTDDeclarations(false); reader.setIncludeInternalDTDDeclarations(false); ******************************************************************* */ SAXReader reader = new SAXReader(); //try to load xml data into Document object Document doc = null; try { String urlString = null; if (filePath.startsWith("/")) { urlString = "file://" + filePath; } else { urlString = "file:///" + filePath; } logger.debug("XML File's URL :" + urlString); doc = reader.read(new URL(urlString)); } catch (Exception ex) { logger.info("Can not load " + filePath); logger.debug(ex.getMessage(), ex); } //return Document object return doc; } /** * Get attribute value by name for some xml element. * * @param element Element * @param attributeName String * @return String */ public static String getAttributeValue(Element element, String attributeName) { String attributeValue = null; for (Iterator i = element.attributeIterator(); i.hasNext(); ) { Attribute attribute = (Attribute) i.next(); if (attribute.getName().equals(attributeName)) { attributeValue = (String) attribute.getData(); break; } } return attributeValue; } public static Element findElement(Element searchedElement, String targetNodePrefix, String targetNodeAttributeName, String targetNodeAttributeValue) { Element elementTarget = null; for (Iterator i = searchedElement.elementIterator(targetNodePrefix); i.hasNext(); ) { Element element = (Element) i.next(); String strManagerName = XMLFileUtil.getAttributeValue(element, targetNodeAttributeName); if (strManagerName.equals(targetNodeAttributeValue)) { elementTarget = element; break; } } return elementTarget; } private XMLFileUtil() { } }[/code] |
相关文章推荐
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 写了一个Java读取XML文件的工具类,做一下笔记!
- [JAVA] 一个用java读取XML文件的简单方法
- XMLReader—一个可以读取XML文件的java类
- 一个用java读取XML文件的简单方法(转)
- 学习笔记-Java中的xml文件读取之JDOM解析
- [Source Code]Java I/O --- ---使用dom读取一个xml文件的叶子节点的text content
- XMLReader—一个可以读取XML文件的java类
- 一个使用JDOM读取XML文件的工具类
- 学习笔记-Java中的xml文件读取之SAX解析
- 学习笔记-Java中的xml文件读取之DOM4J解析
- 学习笔记-Java中的xml文件读取之DOM解析
- java http xml java通过http来访问一个xml文件的读取过程
- Java 读取XML文件(DOM实现)
- Java 读取XML文件
- JAVA对象序列化保存为XML文件的工具类
- FLEX 初学笔记之一,使用HTTPService读取Data.xml文件,显示于表示层
- java 从文件中一次读取一个字符
- 运用java读取xml文件---DOM 解析