java dom 解析xml 例子,Java DOM解析XML的幾個例子
Sample1:
1:新建XML文檔 books.xml,放到項目的根目錄下。
xmlns="http://test.org/books">
Thinking in JAVA
Core JAVA2
C++ primer
2:java解析代碼如下:
package com.dom.test;
import java.io.File;
import java.io.IOException;
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;
import org.xml.sax.SAXException;
public class Test {
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
/*
* builder.parse()方法將給定文件的內容解析為一個 XML 文檔, 並且返回一個新的 DOM Document對象。
*/
Document document = builder.parse(new File("books.xml"));
//打印document節點
printNode(document,0);
//獲取文檔的根元素,賦值給rootElement變量
Element rootElement = document.getDocumentElement();
//獲取根元素的count屬性
int countOfBooks = Integer.parseInt(rootElement.getAttribute("count"));
String str = rootElement.getAttribute("xmlns");
System.out.println(str);
System.out.println("There are "+countOfBooks+" books , they are ");
//獲取rootElement的所有子節點(不包括屬性節點),返回一個NodeList對象
NodeList childNodes = rootElement.getChildNodes();
for(int i = 0;i < childNodes.getLength();i++){
//獲取childNodes的第i個節點
Node childNode = childNodes.item(i);
//判斷childNode是不是一個元素節點,並且它的 nodeName 值為book
if(childNode.getNodeType() == Node.ELEMENT_NODE
&& childNode.getNodeName().equals("book")){
//若是,則獲取childNode的所有子節點(不包括屬性節點),返回一個NodeList對象
NodeList childNodes_2 = childNode.getChildNodes();
for(int j = 0;j < childNodes_2.getLength();j++){
//獲取childNodes_2的第j個節點
Node childNode_2 = childNodes_2.item(j);
//判斷childNode_2是不是一個元素節點,並且它的 nodeName 值為name
if(childNode_2.getNodeType() == Node.ELEMENT_NODE
&& childNode_2.getNodeName().equals("name")){
//若是,則獲取childNode_2的所有子節點(不包括屬性節點),返回一個NodeList對象
NodeList childNodes_3 = childNode_2.getChildNodes();
for(int k = 0;k < childNodes_3.getLength();k++){
//獲取childNodes_3的第k個節點
Node childNode_3 = childNodes_3.item(k);
//判斷childNodes_3是不是一個文本節點
if(childNode_3.getNodeType() == Node.TEXT_NODE){
//若是,則打印輸出這個文本節點的nodeValue
System.out.println(" <>");
}
}
}
}
}
}
}
/*
* 打印 DOM 節點
* 輸出格式為:
* nodeType(nodeName,nodeValue)
* "ATTRIBUTE"(attributeName=attributeValue)
* ...
* childNodeType[childNodeName,childNodeValue]
* ...
*/
public static void printNode(Node node,int count) {
if (node != null) {
String tmp = "";
for(int i = 0 ; i < count ; i++) tmp += " ";
//獲取node節點的節點類型,賦值給nodeType變量
int nodeType = node.getNodeType();
switch (nodeType) {
case Node.ATTRIBUTE_NODE: tmp += "ATTRIBUTE";break;
case Node.CDATA_SECTION_NODE: tmp += "CDATA_SECTION";break;
case Node.COMMENT_NODE:tmp += "COMMENT";break;
case Node.DOCUMENT_FRAGMENT_NODE:tmp += "DOCUMENT_FRAGMENT";break;
case Node.DOCUMENT_NODE:tmp += "DOCUMENT";break;
case Node.DOCUMENT_TYPE_NODE:tmp += "DOCUMENT_TYPE";break;
case Node.ELEMENT_NODE:tmp += "ELEMENT";break;
case Node.ENTITY_NODE:tmp += "ENTITY";break;
case Node.ENTITY_REFERENCE_NODE:tmp += "ENTITY_REFERENCE";break;
case Node.NOTATION_NODE:tmp += "NOTATION";break;
case Node.PROCESSING_INSTRUCTION_NODE:tmp += "PROCESSING_INSTRUCTION";break;
case Node.TEXT_NODE:tmp += "TEXT";break;
default:return;//invalid node type.
}
System.out.println(tmp+" ("+node.getNodeName()+","+node.getNodeValue()+")");
/*
* node.getAttributes()方法返回
* 包含node節點的屬性的 NamedNodeMap(如果它是 Element)
*/
NamedNodeMap attrs = node.getAttributes();
if(attrs != null)
for(int i = 0 ; i < attrs.getLength() ; i++){
printNode(attrs.item(i),count+1);
}
/*
* node.getChildNodes()方法返回
* 包含node節點的所有子節點的 NodeList。
*/
NodeList childNodes = node.getChildNodes();
for(int i = 0 ; i < childNodes.getLength() ; i++){
printNode(childNodes.item(i),count+1);
}
}
}
}
3:運行上面的Test.java即可測試。
Sample2:
1:新建XML文檔 persons.xml,放到項目的根目錄下。
kalision男
kity
女
qizai
女
2:java解析代碼如下:
package net.vicp.jiasoft;
import javax.xml.parsers.*;
import java.io.IOException;
import org.xml.sax.SAXException;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
public class DomXml {
public void parsersXml() {
//實例化一個文檔構建器工廠
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//通過文檔構建器工廠獲取一個文檔構建器
DocumentBuilder db = dbf.newDocumentBuilder();
//通過文檔通過文檔構建器構建一個文檔實例
Document doc = db.parse("persons.xml");
//獲取所有名字為 “person” 的節點
NodeList nl1 = doc.getElementsByTagName("person");
int size1 = nl1.getLength();
System.out.println("該名稱的節點長度為:" + size1);
for (int i = 0; i < size1; i++) {
Node n = nl1.item(i);
//獲取 n 節點下所有的子節點。此處值得注意,在DOM解析時會將所有回車都視為 n 節點的子節點。
NodeList nl2 = n.getChildNodes();
//因為上面的原因,在此例中第一個 n 節點有 2 個子節點,而第二個 n 節點則有 5 個子節點(因為多了3個回車)。
int size2 = nl2.getLength();
System.out.println("N節點的第一個子節點的長度為:" + size2);
for (int j = 0; j < size2; j++) {
Node n2 = nl2.item(j);
//還是因為上面的原因,故此要處判斷當 n2 節點有子節點的時才輸出。
if (n2.hasChildNodes()) {
System.out.println(n2.getNodeName() + " = " +
n2.getFirstChild().getNodeValue());
}
}
}
} catch (ParserConfigurationException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SAXException ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
DomXml domxml = new DomXml();
domxml.parsersXml();
}
}
3:運行上面的DomXml.java即可測試。
java dom 解析xml 例子,Java DOM解析XML的幾個例子相关推荐
- Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)
Java的xml解析器库有很多,总的来说,万变不离其宗的就是SAX和DOM解析器. SAX的包是org.xml.sax DOM的包是org.w3c.dom 1) DOM DOM 是用与平台和语言无关的 ...
- java xml dom4j 解析_在JAVA中怎么用DOM和DOM4j解析XML啊?
二.XML文件 三.开始解析 public class JDOMTest { public static void main(String[] args) { // 进行对books.xml文件的JD ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...
- java sax解析xml_在Java中使用DOM,SAX和StAX解析器解析XML
java sax解析xml 我碰巧通读了有关Java中XML解析和构建API的章节. 我试用了样本XML上的其他解析器. 然后,我想在我的博客上分享它,这样我就可以得到该代码的参考以及任何阅读此代码的 ...
- java dom获取命名空间属性_Java DOM XML解析::获取元素属性值
如何从元素中提取属性值.我的xml节点是这样写的 < nodename attribute ="value">我需要将其解压缩以将其与另一个字符串进行比较. 但由 ...
- java中解析xml解读,java解析xml(JDOM)
下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档. 为了简单,我用了如下XML作为要解析的XML文件: rjzjh 60.0 够简单的吧,但它对于我们关心 ...
- java 解析/操作 xml 几种常用方式 xml的增加/删除/修改
java 解析/操作 xml 几种常用方式 xml的增加/删除/修改 首先,我们先介绍几种常用的xml解析器. 1. 介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方 ...
- Java开发笔记(一百零九)XML报文的定义和解析
前面介绍了JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...
- Java读取、创建xml(通过dom方式)
创建一个接口 XmlInterface.java public interface XmlInterface {/** * 建立XML文档 * @param fileName 文件全路径名称 */ p ...
最新文章
- html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...
- Java基础笔记-异常
- 自然语言处理中的模式(模式0:模式无处不在模式)
- Elastic Search学习笔记5——基本操作
- 【Python学习】 - anaconda中spyder的常用快捷键总结
- Too many files with unapproved license: 2 See RAT report
- 织梦html权限设置,详细的Dede织梦目录权限安全设置教程
- Microsoft Visual Studio 2010 破解下载!
- 面试官最常问的问题总结(一)
- 菜鸟篇之Java入门学习【ZT】
- “深度学习已死,可微编程万岁!”LeCun老师为何又语出惊人?
- python里面的模块怎么下载_python下载模块然后怎么安装
- android nfc源码分析,深入分析Android NFC技术 android nfc开发
- 单相电能量计算机公式,电能与电压电流的关系及计算公式详解
- 平台型时间信号强度曲线_MRI对动态增强时间信号曲线呈平台型乳腺纤维.PDF
- 怎么克隆计算机的mac,选中克隆为当前电脑MAC地址
- Python strip() 函数 去空格 \n \r \t 函数的用法
- 如何利用极致业务基础平台构建一个通用企业ERP之十六物料进出明细报表的设计...
- matlab中怎么贮存函数,MATLAB参数保存、调用
- linux钉钉-使用playonlinux 可以使用视频会议