- 浏览: 468464 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (146)
- Maven (3)
- Quartz (10)
- Hessian (3)
- JDK (42)
- eclipse (4)
- 设计思想 (6)
- XML (8)
- JavaMail (1)
- Spring (11)
- mina (1)
- HsqlDb (1)
- Cache (2)
- Tool (6)
- 心情 (5)
- JQuery (0)
- Hadoop (5)
- Hbase (3)
- 自动构建 (7)
- JNDI (0)
- 代码赏析 (5)
- Oracle (1)
- Excel (4)
- Effective Java (5)
- JAXB (4)
- fdafasdf (1)
- ccc (0)
- web (3)
- concurrent (1)
- CVS (1)
- eclipse plugin (2)
- Apache (10)
最新评论
-
chxiaowu:
nice!
Quartz实现固定执行次数 -
zxjlwt:
学习了。http://surenpi.com
自定义ClassLoader -
kadlly:
public static final Logger log ...
Hessian 权限认证 -
spring_springmvc:
java程序语言学习教程 地址http://www.zuida ...
Java-Final -
liushuiwuyan:
[img][/img]
设计模式-单例
dom,sax,dom4j,jdom的关系就不描述了.xerces是xml解析的实现,可以设置覆盖jdk的默认解决实现.
1. dom(w3c标准,JDK自带)
2. sax解析[jdk自带]
3. jdom[需要引入jdom]
4. dom4j[需要引入dom4j]
5. xerces[需要引入xerces.jar]
1. dom(w3c标准,JDK自带)
package org.w3c.dom; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /** * * @author hongliang.dinghl DOM生成与解析XML文档 */ public class DomDemo implements XmlDocument { private Document document; public void init() { try { DocumentBuilderFactory factory = DocumentBuilderFactory .newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); this.document = builder.newDocument(); } catch (ParserConfigurationException e) { System.out.println(e.getMessage()); } } public void createXml(String fileName) { Element root = this.document.createElement("employees"); this.document.appendChild(root); Element employee = this.document.createElement("employee"); Element name = this.document.createElement("name"); name.appendChild(this.document.createTextNode("丁宏亮")); employee.appendChild(name); Element sex = this.document.createElement("sex"); sex.appendChild(this.document.createTextNode("m")); employee.appendChild(sex); Element age = this.document.createElement("age"); age.appendChild(this.document.createTextNode("30")); employee.appendChild(age); root.appendChild(employee); TransformerFactory tf = TransformerFactory.newInstance(); try { Transformer transformer = tf.newTransformer(); DOMSource source = new DOMSource(document); transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); PrintWriter pw = new PrintWriter(new FileOutputStream(fileName)); StreamResult result = new StreamResult(pw); transformer.transform(source, result); System.out.println("生成XML文件成功!"); } catch (TransformerConfigurationException e) { System.out.println(e.getMessage()); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (TransformerException e) { System.out.println(e.getMessage()); } } public void parserXml(String fileName) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(fileName); NodeList employees = document.getChildNodes(); for (int i = 0; i < employees.getLength(); i++) { Node employee = employees.item(i); NodeList employeeInfo = employee.getChildNodes(); for (int j = 0; j < employeeInfo.getLength(); j++) { Node node = employeeInfo.item(j); NodeList employeeMeta = node.getChildNodes(); for (int k = 0; k < employeeMeta.getLength(); k++) { System.out.println(employeeMeta.item(k).getNodeName() + ":" + employeeMeta.item(k).getTextContent()); } } } System.out.println("解析完毕"); } catch (FileNotFoundException e) { System.out.println(e.getMessage()); } catch (ParserConfigurationException e) { System.out.println(e.getMessage()); } catch (SAXException e) { System.out.println(e.getMessage()); } catch (IOException e) { System.out.println(e.getMessage()); } } }
2. sax解析[jdk自带]
package org.xml.sax; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.w3c.dom.XmlDocument; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * * 优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。 * 缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了; * 无状态性; * * @author hongliang.dinghl SAX文档解析 */ public class SaxDemo implements XmlDocument { @Override public void init() { // TODO Auto-generated method stub } public void createXml(String fileName) { System.out.println("<<" + fileName + ">>"); } public void parserXml(String fileName) { SAXParserFactory saxfac = SAXParserFactory.newInstance(); try { SAXParser saxparser = saxfac.newSAXParser(); InputStream is = new FileInputStream(fileName); saxparser.parse(is, new MySAXHandler()); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class MySAXHandler extends DefaultHandler { boolean hasAttribute = false; Attributes attributes = null; public void startDocument() throws SAXException { System.out.println("文档开始打印了"); } public void endDocument() throws SAXException { System.out.println("文档打印结束了"); } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equals("employees")) { return; } if (qName.equals("employee")) { System.out.println(qName); } if (attributes.getLength() > 0) { this.attributes = attributes; this.hasAttribute = true; } } public void endElement(String uri, String localName, String qName) throws SAXException { if (hasAttribute && (attributes != null)) { for (int i = 0; i < attributes.getLength(); i++) { System.out.println(attributes.getQName(0) + attributes.getValue(0)); } } } public void characters(char[] ch, int start, int length) throws SAXException { System.out.println(new String(ch, start, length)); } }
3. jdom[需要引入jdom]
package org.jdom; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; import org.w3c.dom.XmlDocument; /** * * @author hongliang.dinghl JDOM 生成与解析XML文档 * */ public class JDomDemo implements XmlDocument { public void createXml(String fileName) { Document document; Element root; root = new Element("employees"); document = new Document(root); Element employee = new Element("employee"); root.addContent(employee); Element name = new Element("name"); name.setText("ddvip"); employee.addContent(name); Element sex = new Element("sex"); sex.setText("m"); employee.addContent(sex); Element age = new Element("age"); age.setText("23"); employee.addContent(age); XMLOutputter XMLOut = new XMLOutputter(); try { XMLOut.output(document, new FileOutputStream(fileName)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void parserXml(String fileName) { SAXBuilder builder = new SAXBuilder(false); try { Document document = builder.build(fileName); Element employees = document.getRootElement(); List employeeList = employees.getChildren("employee"); for (int i = 0; i < employeeList.size(); i++) { Element employee = (Element) employeeList.get(i); List employeeInfo = employee.getChildren(); for (int j = 0; j < employeeInfo.size(); j++) { System.out.println(((Element) employeeInfo.get(j)) .getName() + ":" + ((Element) employeeInfo.get(j)).getValue()); } } } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public void init() { // TODO Auto-generated method stub } }
4. dom4j[需要引入dom4j]
package org.dom4j; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Iterator; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.w3c.dom.XmlDocument; /** * 具有性能优异、功能强大和极端易用使用的特点 * 开源 * * @author hongliang.dinghl Dom4j 生成XML文档与解析XML文档 */ public class Dom4jDemo implements XmlDocument { @Override public void init() { // TODO Auto-generated method stub } public void createXml(String fileName) { Document document = DocumentHelper.createDocument(); Element employees = document.addElement("employees"); Element employee = employees.addElement("employee"); Element name = employee.addElement("name"); name.setText("ddvip"); Element sex = employee.addElement("sex"); sex.setText("m"); Element age = employee.addElement("age"); age.setText("29"); try { Writer fileWriter = new FileWriter(fileName); XMLWriter xmlWriter = new XMLWriter(fileWriter); xmlWriter.write(document); xmlWriter.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } public void parserXml(String fileName) { File inputXml = new File(fileName); SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read(inputXml); Element employees = document.getRootElement(); for (Iterator i = employees.elementIterator(); i.hasNext();) { Element employee = (Element) i.next(); for (Iterator j = employee.elementIterator(); j.hasNext();) { Element node = (Element) j.next(); System.out.println(node.getName() + ":" + node.getText()); } } } catch (DocumentException e) { System.out.println(e.getMessage()); } System.out.println("dom4j parserXml"); } }
5. xerces[需要引入xerces.jar]
*System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); *System.setProperty("javax.xml.parsers.SAXParserFactory", "com.sun.org.apache.xerces.jaxp.SAXParserFactoryImpl");
发表评论
-
Xml与Java Object 的转换[JAXB]
2013-12-09 15:25 8110package ycl.learn.xml.jaxb; ... -
xStream之xml
2013-04-10 15:36 17411. 把对象进行字符串输出,把字符串作为对象读入 pack ... -
Spring的schemaResolver
2012-12-18 11:01 1629Spring解析xml可以参考以上,可以指定自定义的schem ... -
Sax解析Xml
2012-12-12 14:01 999对于解析大型的xml,可能使用整个document或整个文件都 ... -
Xml转化为Java,Java转化为Xml[JAXB]
2012-12-12 13:51 1944JAXB:这是java处理xml的标 ... -
Spring读取xml文件[schema/dtd]
2012-12-12 13:44 4901主测试类如下: 说明 使用了ErrorHandler,主要 ... -
Spring,Struts的DTD验证
2010-10-12 11:04 7693一般比较正式的XML信息中都会包含对应的DTD声明,用来定义 ...
相关推荐
4. `jaxen-1.1.1.jar`:Jaxen是一个独立于任何特定XML解析器的XPath实现,它可以与DOM、DOM4J、JDOM等多种XML处理库配合使用,提供XPath查询功能。 使用这些库,开发者可以在Java应用中方便地处理XML文档。例如,...
1. **灵活的API**:DOM4J支持多种XML处理模式,包括DOM、SAX和StAX,可以根据项目需求选择最适合的方法。 2. **易于使用**:其设计简洁,使得开发者能够快速上手,通过直观的API实现XML文档的读写。 3. **XPath支持*...
在Java编程中,处理XML文件时通常会用到解析库,本话题将详细探讨DOM4J和JDOM这两款常用的XML解析库,以及它们所需的依赖包。 1. DOM4J解析库: DOM4J是Java中的一款非常灵活且功能强大的XML处理库,其名称来源于...
在Java编程领域,XML(可扩展标记语言)是用于数据交换和存储的常见格式,而DOM4J、JDOM和XercesImpl是处理XML文档的三个重要库。这三个jar文件是Java XML处理的重要组成部分,下面将分别详细介绍它们的功能、用途...
除了SAX,Xerces-J还支持DOM解析器,该解析器将整个XML文档转化为一个树形结构,方便进行遍历和修改。DOM解析器适用于文档较小或者需要频繁查询的情况,但内存消耗较大。 Xerces-J的源代码包含了完整的解析引擎实现...
DOM4J是一个Java库,它提供了对XML、XPath和XSLT的全面支持,同时也包含了DOM、SAX和JDOM的API。DOM4J的设计目标是简单易用,因此它非常适合处理小型到中型的XML文档。如果你在Java项目中使用DOM4J来解析XML,那么`...
SAX与DOM和JDOM不同之处在于,它不会将整个XML文档加载到内存中,而是逐个处理文档中的事件,从而节省了内存资源。 #### 三、JDOM的基本使用流程 在使用JDOM之前,首先需要下载并配置JDOM库。可以从官方网址下载...
DOM4J是一个非常灵活的Java XML API,它提供了对DOM、SAX和JDOM的增强支持。DOM4J提供了丰富的API来处理XML,包括创建、修改和查询XML文档。它支持XPath表达式,使得能够方便地查找和操作XML元素。此外,DOM4J还...
在JavaOne大会上,JDOM的介绍可能涉及了JDOM的最新版本特性、性能优化、与其他XML库(如DOM4J、Apache Xerces等)的比较,以及如何利用JDOM进行XML的序列化和反序列化。这部分内容通常会强调JDOM的易用性和灵活性,...
首先,我们要明白JDOM的核心理念是建立一个完全用Java实现的DOM(Document Object Model)接口,避免了使用其他跨平台的XML解析库如DOM4J或Xerces时可能遇到的平台依赖性问题。JDOM的设计目标是简单、高效和直接,...
XPath是查询XML文档的路径语言,Jaxen允许在JDOM、DOM4J等不同模型上执行XPath表达式。 7. **XML-apis.jar**:这个库包含了XML规范的基本API,如DOM、SAX和XML Schema。 8. **SaxPath.jar**:SAXPath是SAX解析器和...
本文将深入探讨三种主流的Java XML解析方法:DOM4J、JDOM和SAX,帮助你理解它们的工作原理以及如何在实际开发中有效利用。 一、DOM4J解析 DOM4J是一个灵活的开源Java库,用于处理XML文档。它基于DOM(Document ...
DOM4J是一个开源的Java XML API,它在灵活性和性能上优于JDOM,同时提供了一个接口和抽象类的模型。尽管API相对复杂,但它的功能强大且易于使用。DOM4J广泛应用于如Hibernate和Sun的JAXM等项目。使用DOM4J,开发者...
7. **JDOM与其他解析库比较**:除了JDOM,Java还有许多其他XML处理库,如DOM4J、Xerces和Woodstox。每个库有其特点和适用场景,开发者应根据项目需求选择合适的技术。 8. **apidocs**:这个压缩包内的“apidocs”...
JDOM的出现是为了弥补Java标准库中DOM和SAX解析器的不足,它结合了两者的优势,既支持随机访问,也支持事件驱动模型,适合于各种XML处理场景。 **二、JDOM的优点** 1. **简单易用**:JDOM的API设计得非常直观,...
JDOM与其他XML处理库(如DOM4J、Apache Xerces、Woodstox等)相比,具有更简洁的API和更好的性能。它的设计目标是让Java开发者能更自然地与XML数据交互,避免了过多的低级XML处理工作。 总的来说,JDOM是Java开发中...
4. 检查是否有其他 XML 解析器(如 Woodstox 或 JDOM)与 Xerces 冲突,如果有,调整配置以避免冲突。 标签 "xerces" 提示我们讨论的主题与 Xerces 解析器有关,这是一个强大的工具,广泛应用于处理 XML 数据的 ...
1. **DOM4J**:也是一个流行的Java XML库,提供了与JDOM类似的API,同时支持DOM Level 3和XPath。 2. **Apache Xerces**:Apache提供的XML解析器,实现了完整的DOM和SAX解析,适用于需要高性能和低内存消耗的场景。 ...
2. xerces.jar:提供了Xerces-J,一个实现了XML规范的解析器,包括DOM和SAX解析器。 3. ant.jar:Apache Ant的库,这是一个Java构建工具,常用于编译、测试和打包项目,但在这里可能是依赖于其他库的一部分。 4. ...