import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
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 com.isoftstone.fwk.util.XmlTool;
/**
* 功能:
* @author yaos email: yaos@isoftstone-ai.com
* @date 2008 11 25
*/
public class TestParseDOM {
/**
* 功能:
* @param args
* @throws TransformerException
*/
public static void main(String[] args) throws Exception {
//writeSchoolXml();
readSchoolXml();
}
private static void readSchoolXml() throws Exception{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputStream is = new FileInputStream(new File("src/writeXML.xml"));
Document doc = db.parse(is);
Element element = doc.getDocumentElement();
NodeList rootNodeList = element.getChildNodes();
//analysisNode(rootNodeList);
/****************************************************************************************************/
if(rootNodeList!=null){
for(int i = 0 ; i < rootNodeList.getLength() ; i ++){
Node node1 = rootNodeList.item(i);
if(node1.getNodeType()==Node.ELEMENT_NODE){
String name1 = node1.getAttributes().item(0).getNodeName();
String value1 = node1.getAttributes().item(0).getNodeValue();
System.out.println(name1+"-->"+value1);
NodeList nodelist2 = node1.getChildNodes();
if(nodelist2!=null){
for(int j = 0 ; j < nodelist2.getLength() ; j++){
Node node2 = nodelist2.item(j);
if(node2.getNodeType()==Node.ELEMENT_NODE){
String name2 = node2.getAttributes().item(0).getNodeName();
String value2 = node2.getAttributes().item(0).getNodeValue();
System.out.println(name2+"-->"+value2);
NodeList nodelist3 = node2.getChildNodes();
if(nodelist3!=null){
for(int k = 0 ; k < nodelist3.getLength() ; k++){
Node node3 = nodelist3.item(k);
if(node3.getNodeType()==Node.ELEMENT_NODE){
String childName = node3.getNodeName();
String childValue = node3.getFirstChild().getNodeValue();
System.out.println(childName+"-->"+childValue);
}
}
}
}
System.out.println("------------");
}
}
}
System.out.println("------------");
}
}
/****************************************************************************************************/
}
public static void analysisNode(NodeList nodelist){
if(nodelist!=null){
for(int k = 0 ; k < nodelist.getLength() ; k++){
Node node = nodelist.item(k);
if(node.getNodeType()==Node.ELEMENT_NODE){
if(node.getAttributes()!=null&&node.getAttributes().item(0)!=null){
String name2 = node.getAttributes().item(0).getNodeName();
String value2 = node.getAttributes().item(0).getTextContent();
System.out.println(name2+"-->"+value2);
}else{
String childName = node.getNodeName();
String childValue = node.getFirstChild().getTextContent();
System.out.println(childName+"-->"+childValue);
}
analysisNode(node.getChildNodes());
}
}
}
}
}
也可以将/***************/之间的去掉,调用递规函数analysisNode(NodeList nodelist)去解吸
方法中使用的xml的数据是 本BLOG中使用的 生成的school的xml数据及其结构
控制台应该输出:
1 . 调用递规函数输出为:
level-->1
name-->1
teacher-->teacher2
monitor-->stu2
number-->2
name-->2
teacher-->teacher3
monitor-->stu3
number-->4
level-->2
name-->1
teacher-->teacher3
monitor-->stu3
number-->4
name-->2
teacher-->teacher4
monitor-->stu4
number-->8
level-->3
name-->1
teacher-->teacher4
monitor-->stu4
number-->6
name-->2
teacher-->teacher5
monitor-->stu5
number-->12
2 . 调用非递规函数输出为:
------------
level-->1
------------
name-->1
teacher-->teacher2
monitor-->stu2
number-->2
------------
------------
name-->2
teacher-->teacher3
monitor-->stu3
number-->4
------------
------------
------------
------------
level-->2
------------
name-->1
teacher-->teacher3
monitor-->stu3
number-->4
------------
------------
name-->2
teacher-->teacher4
monitor-->stu4
number-->8
------------
------------
------------
------------
level-->3
------------
name-->1
teacher-->teacher4
monitor-->stu4
number-->6
------------
------------
name-->2
teacher-->teacher5
monitor-->stu5
number-->12
------------
------------
------------
------------
分享到:
相关推荐
java从xml中读入数据并存入到sqlserver2005数据库中
在Java编程环境中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它具有良好的结构化和可读性,广泛应用于数据存储、配置文件、Web服务等场景。当需要与数据库交互并生成XML文件时,Java JDBC(Java...
总结来说,"java读xml"这个主题涵盖了Java中处理XML文件的基础知识,包括使用DOM、SAX解析器,以及可能涉及到的第三方库和工具。理解这些内容对于任何Java开发者来说都是必要的,因为XML在许多系统集成和数据交换...
在Java编程中,将Java对象转换为XML数据是一项常见的任务,特别是在处理数据交换或存储时。JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许开发者轻松地在Java对象和XML文档之间进行映射...
在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它具有结构化、可扩展性,常用于存储和传输数据。本文将深入探讨如何在Java中读取和操作XML文件,帮助你掌握相关的编程技能。 首先,要...
Java解释XML是从数据库中提取XML数据并对其进行解析和处理的过程,这一过程涉及到Java的XML处理API,如DOM、SAX和StAX等。在Java中,XML被广泛用于存储和交换结构化数据,尤其是在与数据库交互时。下面将详细介绍这...
之后,可以通过遍历`Document`对象中的节点来读取XML数据。 具体步骤如下: 1. 创建`DocumentBuilderFactory`实例。 2. 使用`DocumentBuilderFactory`实例创建`DocumentBuilder`对象。 3. 使用`DocumentBuilder`...
1. **预处理文件**:在解析XML文件之前,可以编写一个简单的Java程序或脚本来读取文件,移除BOM头,然后将清理后的数据传递给DOM4J进行解析。可以使用Java的`InputStreamReader`和`BufferedReader`,指定正确的编码...
在Java编程语言中,XML(eXtensible Markup Language)是一种重要的数据交换格式,用于存储和传输结构化数据。XML文件具有自解释性,且独立于任何特定程序或硬件平台,这使得它在不同系统间交换数据时非常有用。本篇...
### Java 读取 XML 文件详解 #### 一、引言 在 Java 开发过程中,处理 XML 文件是一项常见的任务。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,被广泛应用于配置文件、数据交换等多种场景。Java ...
在Java编程中,XML(可扩展标记语言)是一种常见的数据交换格式,用于存储和传输结构化数据。XML文件因其灵活性和可读性而被广泛应用于Web服务、配置文件以及数据序列化等领域。本篇文章将深入探讨如何使用Java来...
Java操作XML文件是Java开发中常见的一项任务,特别是在处理配置、数据交换或存储结构化信息时。XML(Extensible Markup Language)是一种标记语言,它的结构清晰、可读性强,易于机器解析和生成。本篇文章将深入探讨...
Java导出XML数据的方法分析与应用 在基于Java的应用程序中,经常需要导出和导入XML数据。Java中操作XML数据的工具方法较多,其中包括DOM、SAX、Pull parser或STAX等。每种方法都有其特点和优缺。 DOM(Document ...
XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来处理XML文件,包括SAX、DOM以及更现代的JSoup等。本文将详细介绍如何使用Java标准库中的DOM API来读取与写入XML...
本教程将详细介绍如何使用Java进行XML数据的导入和导出,并与MySQL数据库进行操作。 首先,导入XML数据到MySQL数据库通常涉及以下步骤: 1. **解析XML文件**:Java提供了多种解析器来读取XML文件,如DOM(Document...
JAXB是Java中用于XML绑定的API,可以将XML数据自动转换为Java对象,反之亦然。以下是一个简单的JAXB示例: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml....
本教程将深入讲解如何在Java环境中,利用Eclipse或MyEclipse IDE调用Web服务并解析返回的XML数据。 首先,理解Web服务的基本概念是关键。Web服务是一种通过HTTP协议传输数据的应用程序接口(API)。SOAP是基于XML的...
XML数据是文本形式,但为了将其作为Base64参数,我们需要先将XML字符串转换为字节数组,再进行Base64编码,生成可读的字符串。在Java中,我们可以使用`java.util.Base64`类来完成这个过程。 其次,**XML解析**是...