XML(DOM)(No.20)
来源:互联网 发布:navicat找不到数据库 编辑:程序博客网 时间:2024/04/30 21:29
节点;
XML中任何东西都是节点
就比如下面这段代码中:
<?xml version="1.0" encoding="UTF-8"?>
<!--我的第一个xml文档 -->
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body><</body>
<emptyElement/>
</note>
节点都有:<note>、<note>与<to>之间的换行、<to>、George、<from>、John、</from>与<heading>之间的换行、Reminder、</heading>与<body>之间的换行、<body>、<、</body>与<emptyElement>之间的换行、<emptyElement>
DOM:解析book.xml
Book.xml:
<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书 category="语言" language="cn">
<书名 name = "XXXXX">javaweb开发</书名>
<作者>Tom</作者>
<s售价>78</s售价>
</书>
<书 category="脚本技术" language="en">
<书名 name = "XXXXX">javaweb开发</书名>
<作者>Tom</作者>
<s售价>78</s售价>
</书>
</书架>
package xml.dom;
import java.io.File;
import org.w3c.dom.Node;
import java.io.IOException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.NamedNodeMap;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
public class MyDomTest {
public static void main(String[] args) {
try {
/*调用 DocumentBuilderFactory.newInstance() 方法得到创建 DOM 解析器的工厂。**/
// 获取工厂对象
DocumentBuilderFactory factoty = DocumentBuilderFactory.newInstance();
/*调用工厂对象的 newDocumentBuilder方法得到 DOM 解析器对象。**/
// 获取解析器
DocumentBuilder builder = factoty.newDocumentBuilder();
/*调用 DOM 解析器对象的 parse() 方法解析 XML 文档,得到代表整个文档的 Document 对象,进行可以利用DOM特性对整个XML文档进行操作了。**/
// 解析指定文档
Document doc = builder.parse(new File("src/book.xml"));
/*NodeList 对象代表一个有顺序的节点列表**/
// 顺序访问节点的方式找到书架节点
NodeList nodeList =
doc.getChildNodes().item(0).getChildNodes();/*childNodes 属性可返回指定节点的子节点的节点列表**/
System.out.println("当前根节点书架的节点数:"+nodeList.getLength());/*length 属性可返回一个节点列表中的节点数目**/
// 随机访问已知元素名称的指定节点
NodeList nodelist = doc.getElementsByTagName("书架");
/*Node的对象note代表文档树中的一个节点,它可以是元素节点、属性节点、文本节点,或者也可以是“节点类型”那一节中所介绍的任何一种节点**/
Node node = nodelist.item(0);/*item() 方法可返回节点列表中处于指定索引号的节点**/
listAllNodes(node);
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
// 对指定的节点进行遍历
public static void listAllNodes(Node node) {
System.out.println("节点名:" + node.getNodeName() + "节点值:"/*nodeName 属性可返回节点的名称,根据其类型**/
+ node.getNodeValue());/*nodeValue 属性可设置或返回某节点的值,根据其类型**/
if (node.getNodeType() == Node.ELEMENT_NODE) {/*nodeType 属性可返回节点的节点类型**/
// 遍历当前元素节点的属性
if (node.hasAttributes()) {/*hasAttributes() 方法会在某节点用于任何属性时返回 true,否则返回 false**/
NamedNodeMap attrs = node.getAttributes();/*NamedNodeMap 对象表示一个无顺序的节点列表**/
for (int i = 0; i < attrs.getLength(); i++) {
Node attrNode = attrs.item(i);
System.out.println(attrNode.getNodeName()+
attrNode.getNodeValue());
}
}
// 遍历当前元素节点的子结点,利用递归实现
if (node.hasChildNodes()) {/*判断当前节点是否拥有子节点。**/
NodeList nodeList = node.getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node childNode = nodeList.item(i);
listAllNodes(childNode);// 递归
}
}
}
}
}
- XML(DOM)(No.20)
- DOM、HTML DOM、XML DOM
- XML-DOM
- XML DOM
- XML DOM
- XML DOM
- XML--DOM
- XML DOM
- xml dom
- XML DOM
- XML DOM
- XML DOM
- XML DOM
- xml DOM
- XML DOM
- XML - DOM
- XML DOM
- XML-DOM
- sql语句
- repeater隔行变色问题(非js)
- DB 迁移到Data Guard 实施方案
- Oracle Exadata 简介
- Oracle ORION IO 测试工具
- XML(DOM)(No.20)
- Oracle 索引可以比表大
- LINUX tar 命令
- Oracle 9i 升级后 OLAP Catalog 组件 Invalid
- 重新签名APK文件
- 关于 数据文件自增长 的一点理解
- 程序员面试题精选100题(16)-O(logn)求Fibonacci数列
- 省市县三级联动
- Oracle 性能相关的几个 视图 和 参数