java-各种xml解析技术总结
需要导入相关jar包:
1、dom:
DOMParser dOMParser = new DOMParser();
dOMParser.parse(fileName);
Document document = dOMParser.getDocument();
Element element = document.getDocumentElement();
NodeList studentNl = element.getElementsByTagName("student");
2、jdom:
//使用SAXBuilder将给定的XML文档读入JDOM Document对象,
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("D:/eclipseCode/edipsegaoji/xmlDom/src/student.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
Element e=(Element) allChildren.get(i);
if(e.getName().equals("student")){
System.out.println("name:" +((Element) allChildren.get(i)).getChild("name").getText());
System.out.println("sex:"+ ((Element) allChildren.get(i)).getChild("sex").getText());
List ll=e.getChildren();
System.out.println("ll =" +ll.size());
for (int j = 0; j < ll.size(); j++) {
Element e1=(Element) ll.get(j);
if(e1.getName().equals("lesson")){
System.out.println("lessonName:" +((Element) ll.get(j)).getChild("lessonName").getText());
System.out.println("lessonScore:"+ ((Element) ll.get(j)).getChild("lessonScore").getText());
}
}
}
}
3、dom4j:
File f = new File("D:/eclipseCode/edipsegaoji/xmlDom/src/student.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
Element foochild;
System.out.println("XML文件开始解析");
for (Iterator i = root.elementIterator("student"); i.hasNext();) {
foo = (Element) i.next();
System.out.println("name :" + foo.elementText("name"));
System.out.println("sex :" + foo.elementText("sex"));
for (Iterator j= foo.elementIterator("lesson"); j.hasNext();) {
foochild = (Element) j.next();
System.out.print(foochild.elementText("lessonName"));
System.out.println(" :" + foochild.elementText("lessonScore"));
}
}
4、sax:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sax;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
/**
*
* @author 尹彬
*/
public class TestSaxParser {
public static void saxParserTest() {
try {
XMLReader xMLReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
xMLReader.setContentHandler(new ContentHandler() {
private int k;
//DTD中定义的元素名
private static final String ELEMENT_NAME = "name";
private static final String ELEMENT_SEX = "sex";
private static final String ELEMENT_LESSON = "lesson";
private static final String ELEMENT_LESSON_NAME = "lessonName";
private static final String ELEMENT_LESSON_SCORE = "lessonScore";
private static final String ELEMENT_STUDENT = "student";
private static final String ELEMENT_LINE = "breakLine";
//当前元素的数据
private String currentData = "";
private String lessonName = "";
private String lessonScore = "";
/**
* 当其他某一个调用事件发生时,先调用此方法来在文档中定位。
*/
public void setDocumentLocator(Locator locator) {
}
/**
* 在解析整个文档开始时调用
*/
public void startDocument() throws SAXException {
System.out.println("XML文件开始解析");
}
/**
* 在解析整个文档结束时调用
*/
public void endDocument() throws SAXException {
System.out.println("XML文件解析结束");
}
/**
* 在解析命名空间开始时调用
*/
public void startPrefixMapping(String prefix, String uri) throws SAXException {
}
/**
* 在解析命名空间结束时调用
*/
public void endPrefixMapping(String prefix) throws SAXException {
}
/**
* 在解析元素开始时调用
*/
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
}
/**
* 在解析元素结束时调用
* @param namespaceURI
* @param localName 本地名,如student
* @param qName 原始名
*/
public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
//System.out.println(++k +" = endElement");
if (localName.equals(ELEMENT_NAME)) {
System.out.println(localName + ":" + currentData);
}
if (localName.equals(ELEMENT_SEX)) {
System.out.println(localName + ":" + currentData);
}
if (localName.equals(ELEMENT_LESSON_NAME)) {
System.out.println(++k + " = lessonName");
this.lessonName = currentData;
}
if (localName.equals(ELEMENT_LESSON_SCORE)) {
System.out.println(++k + " = lessonScore");
this.lessonScore = currentData;
}
if (localName.equals(ELEMENT_LESSON)) {
System.out.println(++k + " = lession");
System.out.println(lessonName + ":" + lessonScore);
}
if (localName.equals(ELEMENT_LINE)) {
System.out.println("------------------------------------");
}
}
/**
* 取得元素数据
*/
public void characters(char[] ch, int start, int length) throws SAXException {
currentData = new String(ch, start, length).trim();
}
/**
* 取得元素数据中的空白
*/
public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
}
/**
* 在解析到处理指令时,调用此方法。
* 这些处理指令不包括XML的版权指令,它由解析器本身识别。
*/
public void processingInstruction(String target, String data) throws SAXException {
}
/**
* 当未验证解析器忽略实体时调用此方法
*/
public void skippedEntity(String name) throws SAXException {
}
});
xMLReader.parse(TestSaxParser.class.getResource("/") + "student.xml");
} catch (Exception e) {
e.printStackTrace();
}
}
}
下面是xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : student.xml
Created on : 2010年4月6日, 下午3:01
Author : Administrator
Description:
Purpose of the document follows.
-->
<!DOCTYPE StudentInfo SYSTEM "student.dtd">
<StudentInfo>
<student>
<name>刘伟</name>
<sex>男</sex>
<lesson>
<lessonName>Java初级</lessonName>
<lessonScore>85</lessonScore>
</lesson>
<lesson>
<lessonName>Oracle数据库</lessonName>
<lessonScore>95</lessonScore>
</lesson>
<lesson>
<lessonName>Java中级</lessonName>
<lessonScore>80</lessonScore>
</lesson>
<lesson>
<lessonName>Java高级</lessonName>
<lessonScore>100</lessonScore>
</lesson>
</student>
<breakLine />
<student>
<name>花木兰</name>
<sex>女</sex>
<lesson>
<lessonName>射箭</lessonName>
<lessonScore>100</lessonScore>
</lesson>
<lesson>
<lessonName>柔道</lessonName>
<lessonScore>95</lessonScore>
</lesson>
<lesson>
<lessonName>国学</lessonName>
<lessonScore>80</lessonScore>
</lesson>
<lesson>
<lessonName>烹饪</lessonName>
<lessonScore>60</lessonScore>
</lesson>
<lesson>
<lessonName>游泳</lessonName>
<lessonScore>70</lessonScore>
</lesson>
</student>
<breakLine/>
</StudentInfo>
相关推荐
java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析工具类 java xml解析工具类java xml解析...
总的来说,VTD-XML是一种强大的XML解析解决方案,它通过独特的VTD技术为开发者提供了更高效、更节省资源的XML处理方式。无论是在大型企业系统还是在小型应用中,VTD-XML都能以其出色的性能和丰富的功能满足各种XML...
【Java - XML解析总结】 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和Web服务。Java 提供了多种方法来解析 XML 文档,主要包括 DOM(Document Object Model)和 ...
基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发...
java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava...
本文将围绕给定的“java-xml解析”这一主题进行深入探讨。 #### 二、JDBC 与 XML 的关系 尽管提供的部分内容主要介绍了 JDBC(Java Database Connectivity)的相关概念,但这里我们关注的是如何利用 Java 对 XML ...
通过研究这个“java心电图xml解析.zip”中的源码,可以深入理解如何在实际项目中应用XML解析技术,以及如何处理特定领域(如医疗)的数据。同时,这也提供了一个学习和实践Java XML解析能力的好机会。
**DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...
它是一个灵活且功能丰富的XML解析器,提供了多种方式来读取、写入、修改和操作XML数据。在Java开发中,DOM4J因其高效的性能和易用性而备受青睐,尤其在处理大量XML数据时,它的优势更为明显。 XML(eXtensible ...
Java解析XML数据主要涉及到的是对XML文档的读取和处理,SAX(Simple API for XML)解析器是一种基于事件驱动的解析方式,适用于处理大型XML文件。与DOM(Document Object Model)解析器不同,SAX不需要一次性加载...
总结来说,Java提供了多种解析XML的方法,包括DOM、SAX和JAXB等。对于处理多级嵌套的XML,DOM和JAXB在操作上更为便捷,而SAX则适用于处理大规模文件。在具体选择时,应根据项目需求和资源限制进行权衡。
Java 实现 XML 解析 Word 文档代码实现 基于给定的文件信息,我们可以总结出以下知识点: 1. Java 实现 XML 解析 Word 文档 Java 可以使用多种方式来解析 Word 文档,包括使用 Apache POI 库、Java2Word 库等。...
本篇文章将深入探讨四种主要的XML解析技术——DOM、SAX、StAX以及JAXB,并进行详细的分析与对比。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一个树形结构,即DOM树。这种解析方式...
Java大作业中涉及的XML解析是一项重要的编程任务,XML(eXtensible Markup Language)是一种用于标记数据的语言,因其灵活性和可扩展性被广泛应用于数据存储、配置管理和数据交换。XML文件以.xml为后缀,其结构清晰...
XML补丁通常包含了对Java XML解析器的更新或扩展,使得J-Sim在处理XML数据时能更加高效和稳定。 xml-java-packages.zip中的三个重要文件: 1. xalan.jar:Xalan是Apache软件基金会的一个开源项目,提供了符合W3C...
通过导入这个jar包,开发者可以在自己的Java应用中使用Xerces提供的XML解析功能。 **xerces_license.txt**:这个文件通常包含软件的许可协议信息,对于Xerces来说,这意味着它是遵循Apache License 2.0发布的。这...