java中有专门读取xml文件的类和方法,下面是一个从xml文件中读取数据到标准输出的例子。
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.w3c.dom.*;
public class DOMDemo
{
//设置输出编码格式
static final String outputEncoding="UTF-8";
private PrintWriter out;
DOMDemo(PrintWriter out)
{
this.out=out;
}
private void print(Node node)
{
//打印节点名称
out.println("NodeName=\""+node.getNodeName()+"\"");
//打印节点URI
String value=node.getNamespaceURI();
if(value!=null)
{
out.println("URL=\""+value+"\"");
}
//打印节点前缀
value=node.getPrefix();
if(value!=null)
{
out.println("Prefix=\""+value+"\"");
}
//打印节点本地名称
value=node.getLocalName();
if(value!=null)
{
out.println("LocalName=\""+value+"\"");
}
//打印节点值
value=node.getNodeValue();
if(value!=null)
{
out.println("NodeValue=");
if(value.trim().equals(""))
{
out.println("[WS]");
}
else
{
out.println("\""+node.getNodeValue()+"\"");
}
}
}
private void echo(Node node)
{
int type=node.getNodeType();
switch(type)
{
//属性节点
case Node.ATTRIBUTE_NODE:
out.println("ATTR");
print(node);
break;
//CDATA
case Node.CDATA_SECTION_NODE:
out.println("CDATA");
print(node);
break;
//注释
case Node.COMMENT_NODE:
out.println("COMMENT");
print(node);
break;
//段落节点
case Node.DOCUMENT_FRAGMENT_NODE:
out.println("DOC_FRAGMENT");
print(node);
break;
//文档节点
case Node.DOCUMENT_NODE:
out.println("DOC");
print(node);
break;
//文档类型节点
case Node.DOCUMENT_TYPE_NODE:
out.println("DOC_TYPE");
print(node);
break;
//元素节点
case Node.ELEMENT_NODE:
out.println("ELEMENT");
print(node);
//得到该节点所有属性
NamedNodeMap atts=node.getAttributes();
for(int i=0;i
{
Node att=atts.item(i);
//递归调用
echo(att);
}
break;
//实体节点
case Node.ENTITY_NODE:
out.println("ENTITY");
print(node);
break;
//实体引用节点
case Node.ENTITY_REFERENCE_NODE:
out.println("ENTITY_REF");
print(node);
break;
//处理说明节点
case Node.NOTATION_NODE:
out.println("NOTATION");
print(node);
break;
//预处理节点
case Node.PROCESSING_INSTRUCTION_NODE:
out.println("PROC_INST");
print(node);
break;
//文本节点
case Node.TEXT_NODE:
out.println("TEXT");
print(node);
break;
//未知节点
default:
out.println("UNKNOWN NODE:"+type);
print(node);
}
//遍历该节点子节点
for(Node child=node.getFirstChild();
child!=null;child=child.getNextSibling())
{
echo(child);
}
}
public static void main(String[] args)
{
//生成一个DocumentBuilderFactory
DocumentBuilderFactory dbf=
DocumentBuilderFactory.newInstance();
//生成一个DocumentBuilder
DocumentBuilder db=null;
try
{
db=dbf.newDocumentBuilder();
}
catch(ParserConfigurationException pce)
{
System.out.println(pce.toString());
}
String fileName=args[0];
//生成文档
Document doc=null;
try
{
//解析文档
doc=db.parse(new File(fileName));
}
catch(IOException ioe)
{
System.out.println(ioe.toString());
}
catch(SAXException se)
{
System.out.println(se.toString());
}
try
{
//显示DOM树
OutputStreamWriter outWriter=
new OutputStreamWriter(System.out,outputEncoding);
new DOMDemo(new PrintWriter(outWriter,true)).echo(doc);
}
catch(UnsupportedEncodingException uee)
{
System.out.println(uee.toString());
}
}
}
综上,主要用的类有:DocumentBuilderFactory,DocumentBuilder,NamedNodeMap,用到的接口有Document,Node,并且用到了递归调用,输出流。
分享到:
相关推荐
5. 遍历和操作节点:通过DOM树的API,如`getElementsByTagName()`, `getChildNodes()`, `getTextContent()`等,遍历和操作XML文档中的各个节点。 例如,在DomProject这个示例项目中,可能包含以下代码片段: ```...
此外,Qt还支持修改DOM树并保存回XML文件。例如,添加新的`item`元素: ```cpp QDomElement newItem = doc.createElement("item"); newItem.setAttribute("id", "new_id"); root.appendChild(newItem); // 保存到...
总结,DOM提供了一种强大且灵活的方式来读取和操作XML文档。通过创建DOMDocument对象,我们可以构建XML文档,通过遍历和查询DOM树,我们可以读取并修改XML文档的内容。在处理复杂的数据结构和需要动态更新XML时,DOM...
本文将深入探讨如何使用DOM读取XML文件,并结合提供的标签“源码”和“工具”,提供实用的代码示例和相关知识。 首先,理解DOM的基本概念。DOM将XML文档看作一个由节点组成的树形结构,其中根节点代表整个文档,而...
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
学习XML语言很重要的一章节,其中的第八章节,掌握如何用DOM操作XML文档
使用DOM4J方法读取XML文件,需要创建SAXReader对象,读取XML文件得到Document对象,然后使用Element对象的elementIterator方法获取指定标签的迭代器,遍历迭代器进行数据提取。 优点:DOM4J方法提供了高效的XML解析...
DOM4J是Java中一个非常优秀的XML处理库,它提供了丰富的API,使得操作XML文件变得简单而高效。在本文中,我们将详细探讨如何利用DOM4J库来读取XML文件。 1. **安装DOM4J** 要使用DOM4J,首先需要将其添加到你的...
读取XML文件使用DOM时,通常分为以下几个步骤: 1. 加载XML文件:使用特定的API(如JavaScript中的`XMLHttpRequest`或Java的`DocumentBuilderFactory`)加载XML文件到内存中。 2. 解析XML:调用解析器(如Java的`...
本主题聚焦于如何利用DOM操作XML文档并将数据插入到HTML表格中。在实际应用中,这种技术常见于网页动态数据展示或者Web应用程序的数据交互。 首先,了解DOM的基本概念是必要的。DOM将XML或HTML文档视为一个由节点...
在实际应用中,DOM解析XML文件常用于动态网页的数据交互、XML配置文件的读取和处理等场景。但需要注意,DOM解析在处理大型XML文件时可能会消耗大量内存,因此在资源有限的环境下,可能需要考虑使用更轻量级的解析...
Java DOM 解析 XML 实例 Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,...通过使用 DOM 解析 XML 文档,我们可以轻松地访问和操作 XML 文档中的元素和属性,从而实现了对 XML 文档的解析和处理。
本篇文章将深入探讨DOM解析XML文件在Android中的应用实例。 首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但...
在处理XML文件时,DOM解析器会将整个XML文档加载到内存中,形成一个完整的节点树,这样我们就可以通过这个树来查找、修改或遍历XML数据。 XML(eXtensible Markup Language)是一种标记语言,常用于存储和传输结构...
DOM解析器读取整个XML文档到内存中,构建一棵由节点组成的树,这些节点代表了XML文档的所有元素、属性、文本和其他结构。 在Java中,`org.w3c.dom`包提供了DOM解析XML的基础接口和类。以下是DOM解析XML的基本步骤:...
Java DOM(Document Object Model)是一种基于树形结构的XML文档处理模型,它允许程序员通过对象接口来访问和操作XML文档的各个部分。DOM为XML文档提供了一种内存中的表示方式,使得开发人员可以方便地创建、修改和...
在读取XML文件后,我们可以使用DOM API遍历文档结构。例如,如果我们有一个如下的XML结构: ```xml <title>ITEYE博客 <url>https://iteye.com</url> ``` 我们可以这样获取`<link>`元素: ```java // 获取...
[实验目的]: 理解应用程序访问与操作XML文档的过程; 掌握用DOM创建XML文档的步骤; 掌握DOM常用类的使用方法 [实验内容] 利用DOM创建如下结构的XML文档(文件名定为:new.xml)
1. 加载XML文档:首先,解析器读取XML文件并将其转化为内存中的DOM树。这个过程包括验证XML的语法正确性、处理命名空间等。 2. 构建DOM树:解析器按照XML文档的结构创建一个节点树,每个元素、属性、文本、注释等都...
5. **遍历和操作XML结构**:现在,你可以使用DOM API遍历XML文档的节点,获取或修改元素、属性和文本。 ```java NodeList nodeList = doc.getElementsByTagName("tag_name"); for (int i = 0; i (); i++) { ...