자바 가 XML 파일 을 읽 는 도구 클래스 를 썼 습 니 다. 필기 하 세 요!

16276 단어 자바log4jxml.netBlog
< style type = "text / css" >. codeFormat {font - family: "Courier New", Courier, mono; font - size: 9pt;} < / style > 아래 XML 파일 이 있다 면 관계 Database 의 Table 로 상상 할 수 있 습 니 다. 이 XML 파일 은 managers 라 는 관계 표 이 고, < manager > 에 포 함 된 것 은 기록 (Record) 입 니 다.그리고 manager 의 service 와 implementation 은 하나의 표시 줄 (Field) 입 니 다!
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
따라서 프로그램 에서 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() {
}
}

좋은 웹페이지 즐겨찾기