DOM编程的增、删、改、查功能实现

要操作的xml文件 product.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<商品>

<产品>
 <产品名>杠铃</产品名>
 <规格>一台</规格>
 <售价>500元</售价>
</产品>

</商品>

 

java源文件 XmlTest.java

 

 

package xmltest;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

 

public class XmlTest {

 /**
  * @param args
  * @throws Exception
  *
  */
 public static void main(String[] args) throws Exception  {
  // TODO Auto-generated method stub
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder = factory.newDocumentBuilder();
  Document document = builder.parse(new File("src/product.xml"));
  
  //parse(document);//解析出所有的节点
  //find(document);//根据节点名查询节点
  //delete(document);/删除节点
  add(document);//增加节点
 }

 public static void delete(Document document) throws Exception {
  NodeList nodes = document.getElementsByTagName("产品");
  Node node = nodes.item(0);
  node.getParentNode().removeChild(node);
  
  TransformerFactory tff = TransformerFactory.newInstance();
  Transformer transform = tff.newTransformer();
  transform.transform(new DOMSource(document), new StreamResult(new File("src/product.xml")));
  
 }

 public static void add(Document document) throws Exception {//增加各级节点
  Node element = document.createElement("产品");
  document.getElementsByTagName("商品").item(0).appendChild(element);
  Node element1 = document.createElement("产品名");
  element1.setTextContent("跑步机");
  Node element2 = document.createElement("规格");
  element2.setTextContent("一台");
  Node element3 = document.createElement("售价");
  element3.setTextContent("300");
  
  
  NodeList nodes = document.getElementsByTagName("产品");
  Node node = nodes.item(1);

  node.appendChild(element1);
  node.appendChild(element2);
  node.appendChild(element3);
  
  
  TransformerFactory factory = TransformerFactory.newInstance();
  Transformer transformer = factory.newTransformer();
  transformer.transform(new DOMSource(document), new StreamResult(new File("src/product.xml")));
  
  
  
 }

 public static void find(Document document) {
  NodeList nodes = document.getElementsByTagName("商品");
  for(int i=0; i<nodes.getLength();i++){
   System.out.println(nodes.item(i));
   
  }
 }

 public static void parse(Node node) {
  if(node.getNodeType()==node.ELEMENT_NODE){
   System.out.println(node.getNodeName());
  }
  NodeList nodes = node.getChildNodes();
  if(nodes.getLength()==0){
   return;
  }
  for(int i=0;i<nodes.getLength();i++){//递归获取各个节点
   Node list = nodes.item(i);
   //System.out.println(list);
   parse(list);
  }
  
  
 }
 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值