JAXP DOM方式解析XML文档实例
增删改查
package jiexi; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; //JAXP DOM方式解析XML文档实例
public class JaxpCRUD {
public static void main(String[] args) throws Exception {
//1,得到解析器DocumentBuilder
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
//2,得到代表整个xml文档的Document对象
Document document=db.parse("src/book.xml");
test1(document);
}
//1、得到具体节点的内容
public static void test1(Document document){//得到第二本书的售价
NodeList list=document.getElementsByTagName("售价");
int length=list.getLength();//获得元素节点的个数
System.out.println(length);
Node node=list.item(1);//角标从0开始
System.out.println(node.getTextContent()); }
//2、遍历所有元素节点
public static void test2(Node node){
//1,判断node是否是元素节点,如果是,打印该节点
if(node.getNodeType()==Node.ELEMENT_NODE ){//判断是否是元素节点
System.out.println(node.getNodeName());
}
//2,判断是否有孩子节点
NodeList children=node.getChildNodes();
for(int i=0;i<children.getLength();i++){
Node n=children.item(i);
test2(n);//3,递归调用
}
}
//3、修改某个元素节点的主题内容
    //将第一本书的售价改为49元
    public static void test3(Document document)throws Exception{
      //1,找到第一本书的售价节点
      NodeList list=document.getElementsByTagName("售价");
      Node node=list.item(0);
      //2,将主题内容改为49元
      node.setTextContent("49元");
      //3,更新设置
      Transformer ts = TransformerFactory.newInstance().newTransformer();
      ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
    }
//4、向指定元素节点中增加子元素节点
    //向第一本书中添加节点<优惠价>39</优惠价>
    public static void test4(Document document)throws Exception{
      //1,找到增加节点处的父级元素
      Node node=document.getElementsByTagName("书").item(0);
      //2,创建节点,并添加主体内容
      Element ele=document.createElement("优惠价");
      ele.setTextContent("39元");
      //3,节点添加到父级元素中
      node.appendChild(ele);
      //4,更新设置
      Transformer ts=TransformerFactory.newInstance().newTransformer();
      ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
    }
    //5、向指定元素节点上增加同级元素节点
    //向第二本书中添加优惠价
    public static void test5(Document document)throws Exception{
      //1,找到添加元素的兄弟节点
      Node node=document.getElementsByTagName("售价").item(1);
      //2,创建节点,并添加内容
      Element ele=document.createElement("优惠价");
      ele.setTextContent("18元");
      //3,节点添加
      node.getParentNode().appendChild(ele);
      //4,更新设置
      Transformer ts=TransformerFactory.newInstance().newTransformer();
      ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
    }
    //6、删除指定元素节点
    //删除优惠价
    public static void test6(Document document)throws Exception{
      //1,获得优惠价节点
      Node node=document.getElementsByTagName("优惠价").item(0);
      //2,删除节点
      node.getParentNode().removeChild(node);
      //3,更新设置
      Transformer ts=TransformerFactory.newInstance().newTransformer();
      ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
    }
    //7、操作XML文件属性
public static void test7(Document document){
//得到第一本书的属性
Node node=document.getElementsByTagName("书").item(0);
if(node.getNodeType()==Node.ELEMENT_NODE){
Element ele=(Element)node;
System.out.println(ele.getAttribute("出版社"));
}
}
//设置第二本书的属性值为新华
public static void test8(Document document)throws Exception{
Node node=document.getElementsByTagName("书").item(1);
Element ele=(Element)node;
ele.setAttribute("出版社", "新华");
TransformerFactory tf=TransformerFactory.newInstance();
Transformer ts=tf.newTransformer();
ts.transform(new DOMSource(document), new StreamResult("src/book.xml"));
}
}

Java用DOM操作xml的更多相关文章

  1. java使用DOM操作XML

    XML DOM简介 XML DOM 是用于获取.更改.添加或删除 XML 元素的标准. XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 标签是一个 ...

  2. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  3. php : DOM 操作 XML

    DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...

  4. java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 <?xml version="1.0" encoding="GB2312"?><学生花名册 ...

  5. Java原生API操作XML

    使用Java操作XML的开源框架比较多,如著名的Dom4J.JDOM等,但个人认为不管你用那个框架都要对JDK原生的API有所了解才能更得心应手的应用.本篇就来简单了解下原生的XML API. JAV ...

  6. JAva使用DOM读取XML数据(解析)

    原来一切都是有套路的 使用DOM解析XML文档步骤 1.创建解析器工厂对象 DocumentBuildFactory对象 2.由解析器工厂对象创建解析器对象,即DocumentBuilder对象 3. ...

  7. java DOM 操作xml

    1 代码如下: package dom.pasing; import java.io.IOException; import java.io.StringWriter; import javax.xm ...

  8. DOM 操作XML(CRUD)

    <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架> ...

  9. Java中Dom解析xml文档

    xml文档 <?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id ...

随机推荐

  1. Mac OS X 10.10(yosemite)更新后,cocoapods出错, 及cocoapods更新至0.34后, 错误情况整理

    1:Mac升级10.10后,执行pod install出错如下 QTX-Will-mini:NewHishop willbin$ pod install [!] Unable to load a sp ...

  2. Google Chrome中的高性能网络(一)

    以下内容是"The Performance of Open Source Applications" (POSA)的草稿, 也是The Architecture of Open S ...

  3. 部署解决方案包 (SharePoint Server 2010)

    转:http://technet.microsoft.com/zh-cn/library/cc262995(v=office.14).aspx 本文介绍各个解决方案包,及其在 Microsoft Sh ...

  4. .net HTMLParser详细使用说明 强大的Filter类 解析HTML文档如此简单

    背景: HTMLParser原本是一个在sourceforge上的一个Java开源项目,使用这个Java类库可以用来线性地或嵌套地解析HTML文本.他的 功能强大和开源等特性吸引了大量Web信息提取的 ...

  5. Android 实用代码七段(一)

    前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: htt ...

  6. linux cross toolsChain 交叉编译 ARM(转)

    转载请注明出处:http://blog.csdn.net/mybelief321/article/details/9076583 安装环境 Linux版本:Ubuntu 12.04    内核版本:L ...

  7. selenium-ide学习

    最近想把selenium给系统的学习下.主要因为它开源,且适配多个浏览器多种语言. selenium主要由selenium-ide.selenium1.selenium2.selenium guird ...

  8. linux下的oracle11gR2静默安装,经验分享

    说明: 1.我的linux是64位的redhat6.5,安装的oracle版本是11.2.0的. 2.我这是自己安装的linux虚拟机,主机名为ora11g,ip为192.168.100.122 3. ...

  9. 2015年9月28日JQuery提前预习预热笔记

    visual studio下载2010 2010与2008不一样,2008需要添加补丁,采用调用对象.2010可以直接用. JQuery=$ 是函数是方法是对象 念J快儿,念doler 开发人员工具( ...

  10. nyoj 找球号三(除了一个数个数为基数,其他为偶数,编程之美上的)

    #include<iostream> #include<stdio.h> using namespace std; int main() { int len; while(ci ...