<?xml version="1.0"?>
<PEOPLE>
<PERSON PERSONID="E01">
<NAME>Tony Blair</NAME>
<ADDRESS>10 Downing Street, London, UK</ADDRESS>
<TEL>(061) 98765</TEL>
<FAX>(061) 98765</FAX>
<EMAIL>blair@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E02">
<NAME>Bill Clinton</NAME>
<ADDRESS>White House, USA</ADDRESS>
<TEL>(001) 6400 98765</TEL>
<FAX>(001) 6400 98765</FAX>
<EMAIL>bill@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E03">
<NAME>Tom Cruise</NAME>
<ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
<TEL>(001) 4500 67859</TEL>
<FAX>(001) 4500 67859</FAX>
<EMAIL>cruise@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E04">
<NAME>Linda Goodman</NAME>
<ADDRESS>78 Crax Lane, London, UK</ADDRESS>
<TEL>(061) 54 56789</TEL>
<FAX>(061) 54 56789</FAX>
<EMAIL>linda@everywhere.com</EMAIL>
</PERSON>
</PEOPLE>
package cn.sisy.xml;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class DomTest01 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("candidate.xml");
//知道文档大概结构:PERSON
NodeList list = document.getElementsByTagName("PERSON");
for(int i = 0 ; i<list.getLength() ; i++){
Element element = (Element) list.item(i);
//获取元素的属性值,适用于知道属性名称的时候
String content = element.getAttribute("PERSONID");
System.out.print("属性值:"+content+"---");
//节点类型
short tag = element.getElementsByTagName("NAME").item(0)
.getChildNodes().item(0).getNodeType();
System.out.print("节点类型:"+tag+"---");
//节点的名称,取决于其类型
String name = element.getElementsByTagName("NAME").item(0)
.getChildNodes().item(0).getNodeName();
System.out.print("节点名称:"+name+"---");
//节点的值
String value = element.getElementsByTagName("NAME").item(0)
.getChildNodes().item(0).getNodeValue();
System.out.println("节点值:"+value);
}
}
}
属性值:E01---节点类型:3---节点名称:#text---节点值:Tony Blair
属性值:E02---节点类型:3---节点名称:#text---节点值:Bill Clinton
属性值:E03---节点类型:3---节点名称:#text---节点值:Tom Cruise
属性值:E04---节点类型:3---节点名称:#text---节点值:Linda Goodman
package cn.sisy.xml;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
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 DomTest02 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse("student.xml");
//getDocumentElement()访问文档的或文档元素的子结点
//文档的子结点就是文档的根元素结点,适用于不知道文档结构
Element root = document.getDocumentElement();
System.out.println("根元素:"+root.getTagName());
//获取根元素结点的所有子结点
NodeList list = root.getChildNodes();
for(int i = 0; i < list.getLength(); i++){
//元素与子元素,元素与元素之间的空白也被当做了一个结点
System.out.print(list.item(i).getNodeName());
}
//getTextContent():返回此节点及其后代的文本内容。
// for(int i = 0; i < list.getLength(); i++){
// Node n = list.item(i);
// System.out.print(n.getTextContent()+"--");
// }
System.out.println();
NodeList nodeList = document.getElementsByTagName("学生");
for(int i = 0; i < nodeList.getLength(); i++){
//用于获取元素的属性值:适用于不知道属性名称的情况下
NamedNodeMap nnm = nodeList.item(i).getAttributes();
for(int j = 0; j<nnm.getLength();j++){
String attrName = nnm.item(j).getNodeName();
System.out.print(attrName);
System.out.print("=");
String attrValue = nnm.item(j).getNodeValue();
System.out.print(attrValue+" ");
}
System.out.println();
}
}
}
根元素:学生名册
#text学生#text学生#text学生#text
准考证号=001 学号=1 教室号=001
准考证号=002 学号=2 教室号=002
准考证号=003 学号=3 教室号=003
<?xml version="1.0" encoding="UTF-8"?>
<学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Course30\student.xsd">
<学生 学号="1" 准考证号="001" 教室号="001">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>20</年龄>
</学生>
<学生 学号="2" 准考证号="002" 教室号="002">
<姓名>李四</姓名>
<性别>女</性别>
<年龄>19</年龄>
</学生>
<学生 学号="3" 准考证号="003" 教室号="003">
<姓名>王五</姓名>
<性别>男</性别>
<年龄>21</年龄>
</学生>
</学生名册>
package cn.sisy.xml;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Comment;
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;
/**
* 使用递归解析给定的任意一个xml文档并且将其内容输出到命令行上
*/
public class DomTest03 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("student.xml"));
//获得根元素结点
Element root = doc.getDocumentElement();
parseElement(root);
}
private static void parseElement(Element element) {
String tagName = element.getNodeName();
NodeList children = element.getChildNodes();
System.out.print("<" + tagName);
//element元素的所有属性所构成的NamedNodeMap对象,需要对其进行判断
NamedNodeMap map = element.getAttributes();
//如果该元素存在属性
if (null != map) {
//map.getLength()此映射中的节点数
for (int i = 0; i < map.getLength(); i++) {
//获得该元素的每一个属性
Attr attr = (Attr) map.item(i);
String attrName = attr.getName();
String attrValue = attr.getValue();
System.out.print(" " + attrName + "=\"" + attrValue + "\"");
}
// System.out.println(map.getLength());
}
System.out.print(">");
for (int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
//获得结点的类型
short nodeType = node.getNodeType();
if (nodeType == Node.ELEMENT_NODE) {
//是元素,继续递归
parseElement((Element) node);
} else if (nodeType == Node.TEXT_NODE) {
//递归出口
System.out.print(node.getNodeValue());
} else if (nodeType == Node.COMMENT_NODE) {
System.out.print("<!--");
Comment comment = (Comment) node;
//注释内容
String data = comment.getData();
System.out.print(data);
System.out.print("-->");
}
}
System.out.print("</" + tagName + ">");
}
}
- 大小: 91.5 KB
分享到:
相关推荐
DOM解析XML文件例子DOM解析XML文件例子DOM解析XML文件例子
DOM解析XML文档DOM解析XML文档DOM解析XML文档
用dom解析xml文件
在Java平台中如何来使用DOM解析xml文件,
包括android代码实例以及个人对Dom解析xml文件的总结文档。
以一个实例来说明DOM解析XML文件的方法与过程。
android为我们提供了多种解析方式,DOM解析,代码操作简单,一直为解析xml文件的一个不错的选择
文档对象模型 节点和节点树 使用DOM加载XML文档 使用DOM访问、创建和修改节点
FireFox下用XML DOM解析XML文档(ASP.NET Web)
使用dom4j 和本地dom 解析xml 文件
java dom 解析 xml 实例 介绍w3c中的元素的用法,以及在解析xml过程中用到的API进行详细解释
IE下使用XML DOM解析XML文件(ASP.NET Web)
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
基于java的dom解析xml文件代码 收藏
java学习笔记——使用DOM解析XML和使用SAX解析XML
Android使用Dom方式解析XML,虽然xml文件太大时不建议用dom方式解析,但是如果文件比较小,也不失为一种选择。项目中xml放在assets文件夹下,view绑定使用butterknife
主要介绍了JAVA DOM解析XML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用Dom解析XML。包含一些基本的小例子,让你尽快掌握Dom。
用java中的DOM解析器,解析XML文档,并实现一简单通讯录!
XML应用开发(软件品牌)-1期 第6单元 单元测试卷-使用DOM解析XML文档.doc 学习资料 复习资料 教学资源