xml文件为:
<?xml version="1.0" encoding="UTF-8"?>
<HD>
<disk name="C" name1="C1">
<capacity>8G</capacity>
<directories>200</directories>
<files>1580</files>
</disk>
<disk name="D" name1="D2">
<capacity>10G</capacity>
<directories>500</directories>
<files>3000</files>
</disk>
</HD>
我快要疯了 这里编辑不了xml文件,所有xml显示的有问题,根节点为HD,2个父节点为disk,有2个属性name,name1
子节点为capacity,directories,files
1.sax读取
package com.xml;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
public class saxReadXml extends DefaultHandler {
public void parserXMLFile(String fileName) throws SAXException, IOException {
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(this);
reader.setErrorHandler(this);
InputSource source = new InputSource(new FileInputStream(new File(
fileName)));
reader.parse(source);
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
System.out.print("<" + name);
for (int i = 0; i < attributes.getLength(); i++) {
String attrName = attributes.getQName(i);
String attrValue = attributes.getValue(i);
System.out.print(" " + attrName + "=" + attrValue);
}
System.out.print(">");
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
System.out.print("</" + name + ">");
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.print(new String(ch, start, length));
}
@Override
public void startDocument() throws SAXException {
System.out.println("<xml version=\"1.0\" encoding=\"utf-8\"?>");
}
public static void main(String[] args) throws SAXException, IOException {
saxReadXml parser = new saxReadXml();
parser.parserXMLFile("src/com/xml/test.xml");
}
}
2.jdk读取
package com.xml;
//jdk自己读取xml文件
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class jdkReakXml {
// Document可以看作是XML在内存中的一个镜像,那么一旦获取这个Document 就意味着可以通过对
// 内存的操作来实现对XML的操作,首先第一步获取XML相关的Document
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
try {
db = dbf.newDocumentBuilder();
Document doc = db.parse("src/com/xml/test.xml");
Element element = doc.getDocumentElement();
System.out.println("根节点为:" + element.getTagName());// 获得根元素HD
NodeList nodelist = element.getElementsByTagName("disk");// 获得父元素disk
System.out.println("父节点为:" + nodelist.item(0).getNodeName());
System.out.println("父节点disk的个数:" + nodelist.getLength());
System.out.println("_____________________");
for (int i = 0; i < nodelist.getLength(); i++) {
NamedNodeMap map = (NamedNodeMap) nodelist.item(i)
.getAttributes();
for (int j = 0; j < map.getLength(); j++) {
Node node = map.item(j);
System.out.println("父节点的属性名:" + node.getNodeName() + ","
+ "父节点的属性值:" + node.getNodeValue());
}
NodeList childNodes = nodelist.item(i).getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
Node childNode = childNodes.item(j);
// 如果这个节点属于Element ,再进行取值
if (childNode instanceof Element) {
// System.out.println("子节点名为:"+childNode.getNodeName()+"相对应的值为"+childNode.getFirstChild().getNodeValue());
System.out.println("子节点名:" + childNode.getNodeName()
+ "," + "相对应值:"
+ childNode.getFirstChild().getNodeValue());
}
}
System.out.println("_____________________");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.jdom读取
package com.xml;
//用jdom读取xml文件
import java.util.List;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class jdomReadXml {
public static void main(String[] args) throws Exception {
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(jdomReadXml.class.getClassLoader()
.getResourceAsStream("com/xml/test.xml")); // 构造文档对象
Element root = doc.getRootElement(); // 获取根元素HD
System.out.println("根节点为:" + root.getName());
List<Element> list = root.getChildren("disk");// 取名字为disk的所有元素
System.out.println("父节点为:" + list.get(0).getName());
System.out.println("父节点disk的个数:" + list.size());
System.out.println("_____________________");
for (int i = 0; i < list.size(); i++) {
Element element = (Element) list.get(i);
List<Attribute> att = element.getAttributes();
for (int j = 0; j < att.size(); j++) {
Attribute attribute = att.get(j);
System.out.println("父节点属性名:" + attribute.getName() + ","
+ "属性值:" + attribute.getValue());
}
List<Element> childNode = element.getChildren();
for (int j = 0; j < childNode.size(); j++) {
System.out.println("子节点名:" + childNode.get(j).getName() + ","
+ "相对应值:" + childNode.get(j).getValue());
}
System.out.println("_____________________");
}
}
}
4.dom4j读取
package com.xml;
import java.io.File;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.ProcessingInstruction;
import org.dom4j.VisitorSupport;
import org.dom4j.io.SAXReader;
public class dom4jReadXml {
public static void main(String[] args) {
SAXReader reader = new SAXReader();
File file = new File("src/com/xml/test.xml");
try {
Document doc = reader.read(file);
doc.accept(new MyVistor());
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static class MyVistor extends VisitorSupport {
public void visit(Attribute node) {
System.out.println("属性名:" + node.getName() + "=" + node.getValue());
}
public void visit(Element node) {
if (node.isTextOnly()) {
System.out.println("子节点:" + node.getName() + "="
+ node.getText());
} else {
System.out.println("--------" + node.getName() + "-------");
}
}
@Override
public void visit(ProcessingInstruction node) {
System.out.println("PI:" + node.getTarget() + " " + node.getText());
}
}
}
分享到:
相关推荐
要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...
Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,...
在Java中,读取XML文件有多种方法,本文将介绍四种常见的方法:DOM、DOM4J、JDOM和SAX。 DOM(Document Object Model) DOM是W3C组织制定的XML文档对象模型,它提供了对XML文档的树形结构表示。使用DOM方法读取XML...
java读取xml文件的四种方法: 第一种 DOM 实现方法 第二种 DOM4J实现方法 第三种 JDOM实现方法 第四种SAX实现方法
#### 三、Java读取XML文件 对于XML文件的读取,我们可以采用Java标准库中的`BufferedReader`配合`InputStreamReader`的方式来进行处理。这样可以在读取文件的同时指定正确的字符编码,从而避免乱码问题。 ```java ...
Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常用的方法:DOM 实现方法、DOM4J 实现方法、JDOM 实现方法和SAX 实现方法。 DOM 实现方法 DOM(Document Object Model)是 W3C...
这里我们将详细探讨四种不同的Java方法来解析XML文件,以提取所需信息。 第一种方法是使用DOM(Document Object Model)模型。DOM是一种树型结构,它将整个XML文档加载到内存中,允许开发者通过节点遍历来访问和...
Java 读取 XML 文件内容的四种方法 Java 语言提供了多种方法来读取 XML 文件内容,以下是四种常见的方法: 1. DOM(Document Object Model) DOM 是一种基于树的模型,它将 XML 文档表示为一个层次结构的节点或...
Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。使用Java的`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c.dom.Document`接口来实现。以下是一个...
### Java读写XML文件知识点详解 #### 一、概述 在Java编程中,对XML文件进行读取与写入是一项非常常见的任务。XML(可扩展标记语言)是一种用于标记数据的语言,非常适合用来存储和传输数据。Java提供了多种API来...
Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...
### Java读写XML文件的方法详解 #### 一、概述 在Java编程中,XML(Extensible Markup Language,可扩展标记语言)是一种广泛使用的数据交换格式。由于其良好的跨平台特性和自描述性,使得XML成为了许多应用程序...
在实际应用中,我们可能会使用DOM、SAX、StAX或JDOM中的任何一种方法,根据XML文件大小和具体需求来读取和处理这些数据。 总结: Java解析XML的方法各有优劣,DOM适合小规模、频繁操作的场景,SAX适用于处理大文件...
Java解析XML时,主要有四种方法:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML)以及JAXB(Java Architecture for XML Binding)。这四种方法各有特点,适用于不同的场景...
Java解析XML的四种经典方法是XML处理中常用的技术,它们分别是DOM、SAX、StAX和JDOM。每种方法都有其独特的特性和适用场景,下面将详细介绍这四种方法。 1. DOM(Document Object Model)解析: DOM是W3C制定的一种...
### Java解析XML的四种方式详解 #### 一、DOM(Document Object Model) DOM是一种平台和语言中立的接口,它将XML文档表示为一个树结构,使得程序可以创建、读取、更新或删除树中的元素。DOM实现了W3C的标准,能够...
Java提供了多种读写XML文件的方法,包括SAX、DOM、StAX以及JAXB等。本文将基于提供的文件信息,深入探讨如何利用Java进行XML文件的读取与写入,重点介绍DOM(Document Object Model)方式的操作。 #### DOM解析XML...
Java更新XML文档的方法主要包括四种,本文将探讨这些方法并分析其优缺点。首先,我们要了解JAXP(Java API for XML Processing),这是一个用于XML处理的Java编程接口,支持DOM、SAX和XSLT等标准。JAXP的可插拔层...
在Java中,处理XML文件主要有四种方式:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML)以及JAXB(Java Architecture for XML Binding)。下面将详细介绍这四种方法。 1....