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. log4net面面观之Repository

    转:http://itrust.cnblogs.com/archive/2006/07/17/452895.html 上回说道:Repository可以说成基于一个log4net配置节创建的log4n ...

  2. 从零开始学习jQuery (七) jQuery动画-让页面动起来!

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 开发人员一直痛疼做动画. 但是有了jQuery你 ...

  3. c#调用带有安全认证的java webservice

    最近使用c#调用另外一个同事写的java webservice耽误了很多时间,网上资料不太完整,走了很多弯路,希望对大家有帮助. 基本思路是1.拼装soap使用http post ,主要将验证身份信息 ...

  4. selenium2.0的初步封装(java版本)

    我们都知道, 在本地创建java项目后,引入selenium-java-2.35.0.jar   selenium-support-2.35.0.jar junit-4.8.1.jar等等jar包之后 ...

  5. [POJ1852]Ants

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12431   Accepted: 5462 Description An a ...

  6. [codevs3862]竞赛班的垃圾处理

    题目描述 Description 竞赛班的师弟们都很懒,每个人都不喜欢倒垃圾,结果垃圾就会跟师兄的RP一样越堆越多,当然,老师时不时就会叫他们去倒垃圾.由于他们真的很懒,他们只会直接将垃圾桶最上面袋拿 ...

  7. 【前端】CSS3实现弹出效果

    36氪这个网站上的登录框弹出的时候挺帅气的,想知道它是怎么做的 .. 今天通过问新爷再加上自己琢磨琢磨写出一个小小Demo - 上代码 <!DOCTYPE html> <html&g ...

  8. Linux内核系列设备模型(一) Kobject与Kset

    1.Kobject Kobject是设备驱动模型的核心结构,它使所有设备在底层都有统一的接口.在内核注册的kobject对象都会对应sysfs文件系统中的一个目录(目录名称有Kobject结构中k_n ...

  9. Jquery Ajax的时候 老是返回到 error,是因为json格式不正规的原因

    Jquery Ajax的时候 老是返回到 error,是因为json格式不正规的原因: 怪不得不执行,原来我返回的是{success:true,id:1} 这种不规则的字符串,不是严格的json格式, ...

  10. hdoj 1253 胜利大逃亡

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...