import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
/**
*这个类提供一些 JDom 对象常用的方法。
* @author 刘海龙(xiaoleilong@mail.biti.edu.cn)
*/
public class JDomUtil {
/**
* 根据指定路径的XML文件建立JDom对象
* @param filePath XML文件的路径
* @return 返回建立的JDom对象,建立不成功返回null 。
*/
public static Document buildFromFile(String filePath) {
try {
SAXBuilder builder = new SAXBuilder();
Document anotherDocument = builder.build(new File(filePath));
return anotherDocument;
} catch(JDOMException e) {
e.printStackTrace();
} catch(NullPointerException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据XML 字符串 建立JDom对象
* @param xmlString XML格式的字符串
* @return 返回建立的JDom对象,建立不成功返回null 。
*/
public static Document buildFromXMLString(String xmlString) {
try {
SAXBuilder builder = new SAXBuilder();
Document anotherDocument = builder.build(new StringReader(xmlString));
return anotherDocument;
} catch(JDOMException e) {
e.printStackTrace();
} catch(NullPointerException e) {
e.printStackTrace();
}
return null;
}
/**
* 根据Dom对象建立JDom对象
* @param Dom org.w3c.dom.Document对象
* @return 返回建立的JDom对象,建立不成功返回null 。
*/
public static Document buildFromDom(org.w3c.dom.Document Dom)
throws JDOMException, IOException {
org.jdom.input.DOMBuilder builder = new org.jdom.input.DOMBuilder();
Document jdomDoc = builder.build(Dom);
return jdomDoc;
}
/**
*这个方法使用XMLOutputer将一个JDom对象输出到标准输出设备,使用 GBK 编码
* @param myDocument 将要被输出的JDom对象
*/
public static void outputToStdout(Document myDocument) {
outputToStdout(myDocument,"GBK");
}
/**
*这个方法使用XMLOutputer将一个JDom对象输出到标准输出设备
* @param myDocument 将要被输出的JDom对象
* @param encoding 输出使用的编码
*/
public static void outputToStdout(Document myDocument,String encoding) {
try {
XMLOutputter outputter = new XMLOutputter(" ", true,encoding);
outputter.output(myDocument, System.out);
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
/**
* 这个方法将JDom对象转换字符串.
* @param document 将要被转换的JDom对象
*/
public static String outputToString(Document document){
return outputToString(document,"GBK");
}
/**
* 这个方法将JDom对象转换字符串.
* @param document 将要被转换的JDom对象
* @param encoding 输出字符串使用的编码
*/
public static String outputToString(Document document,String encoding){
ByteArrayOutputStream byteRep = new ByteArrayOutputStream();
XMLOutputter docWriter = new XMLOutputter(" ", true,encoding);
try{
docWriter.output(document, byteRep);
}catch(Exception e){
}
return byteRep.toString();
}
public static org.w3c.dom.Document outputToDom(org.jdom.Document jdomDoc)
throws JDOMException {
org.jdom.output.DOMOutputter outputter = new org.jdom.output.DOMOutputter();
return outputter.output(jdomDoc);
}
/**
* 这个方法使用XMLOutputter将JDom对象输出到文件
* @param myDocument 将要输出的JDom对象
* @param filePath 将要输出到的磁盘路径
*/
public static void outputToFile(Document myDocument,String filePath) {
outputToFile(myDocument,filePath,"GBK");
}
/**
* 这个方法使用XMLOutputter将JDom对象输出到文件
* @param myDocument 将要输出的JDom对象
* @param filePath 将要输出到的磁盘路径
* @param encoding 编码方式
*/
public static void outputToFile(Document myDocument,String filePath,String encoding) {
//setup this like outputDocument
try {
XMLOutputter outputter = new XMLOutputter(" ", true,encoding);
//output to a file
FileWriter writer = new FileWriter(filePath);
outputter.output(myDocument, writer);
writer.close();
} catch(java.io.IOException e) {
e.printStackTrace();
}
}
/**
* 这个方法将JDom对象通过样式单转换.
* @param myDocument 将要被转换的JDom对象
* @param xslFilePath XSL文件的磁盘路径
*/
public static void executeXSL(Document myDocument,String xslFilePath,StreamResult xmlResult) {
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
// Make the input sources for the XML and XSLT documents
org.jdom.output.DOMOutputter outputter = new org.jdom.output.DOMOutputter();
org.w3c.dom.Document domDocument = outputter.output(myDocument);
javax.xml.transform.Source xmlSource = new javax.xml.transform.dom.DOMSource(domDocument);
StreamSource xsltSource = new StreamSource(new FileInputStream(xslFilePath));
//Get a XSLT transformer
Transformer transformer = tFactory.newTransformer(xsltSource);
//do the transform
transformer.transform(xmlSource, xmlResult);
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(TransformerConfigurationException e) {
e.printStackTrace();
} catch(TransformerException e) {
e.printStackTrace();
} catch(org.jdom.JDOMException e) {
e.printStackTrace();
}
}
//Main 函数,局部测试用。
public static void main(String argv[]) {
}
}
分享到:
相关推荐
**JDOM 简介** JDOM 是一种专为 Java 开发者设计的...通过自定义工具类,可以进一步封装常用功能,提高代码的可复用性和可维护性。在实际项目中,结合 JDOM 的特性和 XML 的结构,可以实现灵活、强大的 XML 处理能力。
在Java中,处理JSON对象通常需要依赖特定的库,本主题涉及的是两个常用的JSON处理JAR包:`json-lib-2.4-jdk15.jar`和`jsonrpc.jar`。 `json-lib-2.4-jdk15.jar`是Json-lib库的一个版本,它是一个Java API,提供了将...
Java常用Jar2这个主题涉及到的是Java开发中经常使用的外部库文件,这些库文件通常以.JAR(Java Archive)格式存在,用于封装多个类文件、资源文件以及元数据,便于在不同项目中复用和分发。JAR文件是Java平台的标准...
J2EE平台的复杂性使得开发者需要依赖各种第三方库,其中jar包是Java应用程序的基础组件,用于封装类和资源。以下是关于"J2EE常用jar包"中提及的一些关键知识点: 1. **Log4j**:Log4j是Apache的一个开源项目,提供...
Java开发中的JAR(Java Archive)包是Java编程语言中的一种归档格式,用于封装类库、资源文件和元数据,便于代码复用和分发。在Java开发中,JAR包扮演着至关重要的角色,提供了模块化和库管理的能力。下面我们将详细...
在Java开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,特别是在与Web服务交互时。当从Web服务接收到XML响应时,通常需要将其解析为更便于操作的数据结构,如Map。Map是一种键值对集合,能够...
当数据量大到一定程度时,XML可能成为数据交换的格式,而SAX、DOM和JDOM是解析XML的主要方法。了解AWT和Swing可以帮助你构建图形用户界面,它们是JAVA中的两种主要GUI工具包。 面向对象编程是JAVA的核心特性,包括...
4. **DOM4J和JDOM**:这两个是Java中常用的XML库,提供DOM、SAX和StAX的API接口。它们简化了XML处理,提供了更友好的API。XmlUtil可能基于这些库进行封装,如使用DOM4J的`Document`和`Element`类进行操作。 5. **...
类是Java面向对象编程的基础,它们封装数据和方法,使得代码结构清晰,易于维护。例如,"我的代码"这个文件可能包含了一个名为"MyClass"的类,其中定义了变量、方法和其他程序结构。 源代码文件首先需要通过Java...
在实际开发中,开发者会根据项目需求创建自定义工具类,将常用功能封装起来,以便复用。这样的做法不仅可以避免代码重复,还能提升代码的可读性和可维护性。 总的来说,理解和掌握这些工具类对于任何IT从业者来说都...
在编程领域,类是一种面向对象的概念,用于封装数据和操作数据的方法。留言板类通常会包含以下关键功能: 1. **数据存储**:处理XML文件的读写,包括创建新留言、读取现有留言、更新或删除留言。 2. **UBB解析**:...
主要有DOM(Document Object Model)、SAX(Simple API for XML,事件驱动)、DOM4J(Java API for XML Processing)、JDOM等。DOM一次性加载整个XML文档,适合小文档;SAX逐行读取,节省内存,适合大文档。 6. **...
常用的注解包括`@Autowired`、`@Qualifier`、`@Resource`、`@Component`、`@Scope`、`@PostConstruct`和`@PreDestroy`等。 #### AOP(面向切面编程) AOP是Spring的一个重要特性,用于实现横切关注点的模块化。在...
其中,DOM(Document Object Model)是一种常用的解析方法,它将整个XML文件加载到内存中形成一棵树形结构,便于访问和操作。JAXP、JDOM和DOM4J是Java中常用的XML解析库。在Android中,通常使用Pull解析器进行XML...
- **面向对象编程**:理解对象的概念,类与对象的关系,封装、继承和多态等核心概念。 2. **面向对象设计**: - **类的设计**:包含构造函数、this关键字、static关键字、内部类,以及垃圾回收机制。 - **多态**...
- **JAXP、JDOM、DOM4J**:学习解析XML文档的方法,包括DOM、SAX等方式。 - **JAXB**:掌握Java Architecture for XML Binding的使用,实现Java对象与XML文档之间的相互转换。 ### 13. Web服务 - **SOAP、RESTful**...
掌握OOP的基本原则(封装、继承、多态)是写出高质量、可维护性强的代码的基础。 #### 八、规范 遵循良好的编码规范对于保持代码的一致性和可读性至关重要。例如,类名首字母大写、成员和方法名首字母小写、方法名...
为了提高代码的复用性和可维护性,通常会将XML和properties文件的读取逻辑封装到单独的工具类中,如`ConfigUtil`,提供静态方法供其他类调用。 7. **总结**: 在Java开发中,读取XML和properties文件是常见的任务...
- **JDOM**:了解JDOM库的使用方法,学会使用JDOM构建和解析XML文档。 - **DOM4J**:掌握DOM4J的特性,学会使用DOM4J进行XML数据操作。 - **JAXR**:了解JAXR在XML注册表中的应用。 #### 十三、Web服务 - **JAX-...