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的幾個例子相关推荐

  1. Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)

    Java的xml解析器库有很多,总的来说,万变不离其宗的就是SAX和DOM解析器. SAX的包是org.xml.sax DOM的包是org.w3c.dom 1) DOM DOM 是用与平台和语言无关的 ...

  2. java xml dom4j 解析_在JAVA中怎么用DOM和DOM4j解析XML啊?

    二.XML文件 三.开始解析 public class JDOMTest { public static void main(String[] args) { // 进行对books.xml文件的JD ...

  3. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...

  4. java sax解析xml_在Java中使用DOM,SAX和StAX解析器解析XML

    java sax解析xml 我碰巧通读了有关Java中XML解析和构建API的章节. 我试用了样本XML上的其他解析器. 然后,我想在我的博客上分享它,这样我就可以得到该代码的参考以及任何阅读此代码的 ...

  5. java dom获取命名空间属性_Java DOM XML解析::获取元素属性值

    如何从元素中提取属性值.我的xml节点是这样写的 &LT nodename attribute ="value">我需要将其解压缩以将其与另一个字符串进行比较. 但由 ...

  6. java中解析xml解读,java解析xml(JDOM)

    下面通过一个简单的例子说明一下怎么用JDOM这一适合Java程序员习惯的工具包来解析XML文档. 为了简单,我用了如下XML作为要解析的XML文件: rjzjh 60.0 够简单的吧,但它对于我们关心 ...

  7. java 解析/操作 xml 几种常用方式 xml的增加/删除/修改

    java 解析/操作 xml 几种常用方式 xml的增加/删除/修改 首先,我们先介绍几种常用的xml解析器. 1. 介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方 ...

  8. Java开发笔记(一百零九)XML报文的定义和解析

    前面介绍了JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...

  9. Java读取、创建xml(通过dom方式)

    创建一个接口 XmlInterface.java public interface XmlInterface {/** * 建立XML文档 * @param fileName 文件全路径名称 */ p ...

最新文章

  1. html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...
  2. Java基础笔记-异常
  3. 自然语言处理中的模式(模式0:模式无处不在模式)
  4. Elastic Search学习笔记5——基本操作
  5. 【Python学习】 - anaconda中spyder的常用快捷键总结
  6. Too many files with unapproved license: 2 See RAT report
  7. 织梦html权限设置,详细的Dede织梦目录权限安全设置教程
  8. Microsoft Visual Studio 2010 破解下载!
  9. 面试官最常问的问题总结(一)
  10. 菜鸟篇之Java入门学习【ZT】
  11. “深度学习已死,可微编程万岁!”LeCun老师为何又语出惊人?
  12. python里面的模块怎么下载_python下载模块然后怎么安装
  13. android nfc源码分析,深入分析Android NFC技术 android nfc开发
  14. 单相电能量计算机公式,电能与电压电流的关系及计算公式详解
  15. 平台型时间信号强度曲线_MRI对动态增强时间信号曲线呈平台型乳腺纤维.PDF
  16. 怎么克隆计算机的mac,选中克隆为当前电脑MAC地址
  17. Python strip() 函数 去空格 \n \r \t 函数的用法
  18. 如何利用极致业务基础平台构建一个通用企业ERP之十六物料进出明细报表的设计...
  19. matlab中怎么贮存函数,MATLAB参数保存、调用
  20. linux钉钉-使用playonlinux 可以使用视频会议

热门文章

  1. 团队Blog功能改进
  2. Go 语言并发模型 Context
  3. 6.19docker (三)实战 Rails
  4. 防止sql注入攻击的方法总结
  5. hihoCoder1040 矩形判断
  6. iOS tabBarController 初始化就执行了 viewDidLoad
  7. Asp.Net 上传大文件专题(3)--从请求流中获取数据并保存为文件[下]
  8. 《数学建模:基于R》一一2.1 回归分析
  9. python中子类调用父类的初始化方法
  10. linux-Tcp IP协议栈源码阅读笔记