<style type="text/css">
.CodeFormat {font-family:"Courier New", Courier, mono; font-size:9pt; }
</style>如果我们有下面的一个XML文件,可以把它想象成一个Relation Database中的Table, 这个XML文件就是一个名字为managers的关系表,而一个<manager>所包含的就是一条记录(Record),而manager中的service和implementation就是一个个的栏位(Field) !
所以,在程序中,可以用类似Table Query的方式来读取XML节点(Node)上面的属性值!
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE managers SYSTEM "manager-config.dtd"> <managers> <manager name="DBConnectionManager" > <service>net.csdn.blog.xport.IDBConnectionManager</service> <implementation>net.csdn.blog.xport.impl.DBConnectionManagerCommonImpl</implementation> </manager> <manager name="NTAccountIdendify" > <service>net.csdn.blog.xport.IDomainIdentify</service> <implementation>net.csdn.blog.xport.impl.DomainIdentifyImpl</implementation> </manager> </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(); } } |
Source of XML Utility Class:
/*
* @(#)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>XmlUtil</code> class supported your code to read/write xml * data from the file. all methods in this class depend on <code>dom4j</code>. * * @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() { } } |
分享到:
相关推荐
### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...
”表明这是一个使用Java编程语言开发的笔记应用程序。Java是一种广泛使用的面向对象的编程语言,以其跨平台性、安全性和可移植性而闻名。这个程序可能是为了帮助用户记录、管理和检索信息,类似于电子版的笔记本。 ...
例如,你可以创建一个新的`TiXmlDocument`对象,加载XML文件,然后遍历文档的元素树,读取或修改你需要的数据。 以下是一个简单的示例: ```cpp #include "TinyXml.h" int main() { TiXmlDocument doc("example....
这个工具库广泛应用于 Java 开发环境中,允许开发者在没有安装 Microsoft Office 的情况下读取、写入和操作这些文件。本文将深入探讨 POI 的核心概念、使用方法以及在读取文件时的关键知识点。 **1. POI 概述** ...
标题"Dom4j学习教程+API+xml实用大全+xml学习笔记+htc"提及了几个关键主题,包括Dom4j的学习资源、API文档,以及关于XML的实用指南和学习笔记,还提到了一个名为"htc"的文件,可能是关于HTC设备或技术的文档。...
- 文件I/O操作:使用`java.io`包,如`FileWriter`和`BufferedReader`,将笔记内容写入和读取文件。可能需要JSON或XML序列化技术来保存额外的元数据,如撤销历史。 - 文件对话框:`JFileChooser`类提供了一种让用户...
在Java编程领域,开发一个能够处理Kindle电子书笔记的桌面程序是一项实用的任务。这个程序主要功能是帮助用户整理和管理Kindle设备上的阅读笔记,包括导入和导出笔记,以便于查阅和备份。以下是对这个项目涉及的技术...
在Java中,一切皆为对象,所以这个“笔记本”程序可能是由多个类组成的,比如`Note`类来表示单个笔记,`Notebook`类来管理所有的笔记,以及一个`Main`类作为程序的入口点。`Note`类可能包含标题、内容和创建日期等...
例如,Apache Commons IO库提供了许多便利的工具类,简化了常见的IO操作,如FileUtils.copyFile()方法用于便捷地复制文件。 在提供的压缩包文件名称列表中,我们看到多个以".dic"结尾的文件,这通常是字典文件,...
5. **输入/输出(I/O)**:Java的I/O流系统允许程序进行文件读写、网络通信等操作,涉及InputStream、OutputStream、Reader、Writer等类。 6. **多线程**:Java内置了对多线程的支持,通过Thread类和Runnable接口可以...
4. **集合框架**:Java集合框架是存储和管理对象的重要工具,包括List、Set和Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。笔记会介绍它们的区别、用法及操作方法。 5. **IO流**:Java的I/O流...
TinyXml是一个轻量级的XML解析库,专为C++设计,它允许程序开发者方便地读写XML文档。TinyXml库的源代码简洁且易于理解,对于初学者和专业人士都是一个很好的工具,可以帮助他们在项目中集成XML处理功能。这篇“Tiny...
【个人JAVA笔记汇总】是一个全面概述Java编程技术的资源集合,涵盖了多个子领域,包括文件操作、XML处理、日志记录、框架应用以及移动开发。以下是对这些知识点的详细阐述: 1. **JXL库**: JXL是Java的一个库,用于...
《李兴华Java笔记》是一份综合性的学习资料,涵盖了Java编程语言的基础到高级主题,适合初学者和有一定经验的开发者。这份笔记可能是作者李兴华个人教学或学习经验的结晶,但需注意,它可能并非针对Java 8版本特别...
3. **XMLReader**:此库用于流式读取XML文档,适合处理大型XML文件,因为它不需要一次性加载整个文档到内存中。 4. **XMLWriter**:用于生成XML文档,提供了一系列方法来创建、打开、关闭元素和属性,以及写入文本...
### Java常用框架学习笔记 #### Hibernate ##### 1.1 Hibernate 实现数据库操作步骤 - **导入所需的Jar包**:为了使用Hibernate框架,首先需要在项目中导入Hibernate库。这通常意味着添加一系列与Hibernate相关的...
Java学习笔记是一个全面涵盖Java编程语言基础知识的资源集合,非常适合初学者进行系统性的学习。Java是一种广泛应用的面向对象的编程语言,以其“一次编写,到处运行”的特性而著名,这得益于其跨平台的JVM(Java...
`java.io`包提供了流式输入/输出的支持,是进行文件读写和网络通信的基础。 - **流的概念与分类**:介绍流的基本概念,包括输入流和输出流的区别,以及字节流与字符流的不同。 - **常见流类**:如`FileInputStream`...
【标题】中的“基于Qt开发的简易笔记系统,通过XML存储文件”表明这是一个使用Qt框架用C++编写的笔记应用程序,其数据存储机制是XML。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式平台,提供...
根据给定文件的信息,我们可以总结出“Java_SE基础毕向东老师全程笔记”中涉及的关键知识点。这份笔记由毕向东老师授课,涵盖了Java的基础知识及进阶主题,具体章节包括编程基础、数组、面向对象程序设计等多个方面...