jaxp学习(一) jaxp用dom解析xml文件(遍历,修改,删除,新建)操作

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
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;
import org.xml.sax.SAXException;

public class Jaxpdemo1 {
   public static void main(String []args) throws Exception
   {
	   /*
		 * 1 创建解析器工厂
		 * 2.根据解析器工厂实例来创建解析器
		 * 3 通过解析器的parse方法来解析返回Document对象
		 * 4.根据需要可以进行获取节点,增加节点,修改节点,遍历节点等操作
		 * 5.在实现操作后,如果是对源文件进行更改的话,记得重写到xml
		 * 
		 * 重写步骤:
		 * 1.获取重写器工厂
		 * 2.通过重写器工厂实例来创建重写器
		  *3.通过重写器的transform方法把修改后的文件写到xml文件中
		 */
	   method1();
   }

private static void method4() throws ParserConfigurationException,
		SAXException, IOException {
	//遍历元素节点
	DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
			 DocumentBuilder buider=db.newDocumentBuilder();
			 Document d=buider.parse("src/1.xml");
			 list(d);
}

private static void list(Node d) {
	 if(d.getNodeType()==Node.ELEMENT_NODE)
	 {
	  System.out.println(d.getNodeName());}
	  NodeList nodeList=d.getChildNodes();
	  for(int i=0;i<nodeList.getLength();i++)
	  {
		  Node node =nodeList.item(i);
		  list(node);
	  }
	  
	
}

private static void method5() throws ParserConfigurationException,
		SAXException, IOException, TransformerFactoryConfigurationError,
		TransformerConfigurationException, TransformerException {
	//删除节点
	     DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
		 DocumentBuilder buider=db.newDocumentBuilder();
		 Document d=buider.parse("src/1.xml");
		 NodeList nl=d.getElementsByTagName("age");
		 Node n=nl.item(0);
		 Node n2=n.getParentNode();
		 n2.removeChild(n);
		 TransformerFactory transformerFactory=TransformerFactory.newInstance();
		 Transformer transformer=transformerFactory.newTransformer();
		 transformer.transform(new DOMSource(d), new StreamResult("src/1.xml"));
}

private static void method3() throws ParserConfigurationException,
		SAXException, IOException, TransformerFactoryConfigurationError,
		TransformerConfigurationException, TransformerException {
	//修改节点内容
	DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
	 DocumentBuilder buider=db.newDocumentBuilder();
	 Document d=buider.parse("src/1.xml");
	 NodeList nl=d.getElementsByTagName("name");
	 Node n=nl.item(0);
	 n.setTextContent("小欢"); 
	 TransformerFactory transformerFactory=TransformerFactory.newInstance();
	 Transformer transformer=transformerFactory.newTransformer();
	 transformer.transform(new DOMSource(d), new StreamResult("src/1.xml"));
}

private static void method2() throws ParserConfigurationException,
		SAXException, IOException, TransformerFactoryConfigurationError,
        TransformerConfigurationException, TransformerException {
	//新增加结点
	 DocumentBuilderFactory db=DocumentBuilderFactory.newInstance();
     DocumentBuilder buider=db.newDocumentBuilder();
     Document d=buider.parse("src/1.xml");
     NodeList nl=d.getElementsByTagName("name");
     Node n=nl.item(0);
     Node Text=d.createTextNode("小王");
     Node tag=d.createElement("name");
     tag.appendChild(Text);
     n.appendChild(tag);
     TransformerFactory transformerFactory=TransformerFactory.newInstance();
     Transformer transformer=transformerFactory.newTransformer();
     transformer.transform(new DOMSource(d), new StreamResult("src/1.xml"));
}

private static void method1() throws ParserConfigurationException,
		SAXException, IOException {
	 //遍历标签明为age的结点
	   DocumentBuilderFactory buidderfactory =DocumentBuilderFactory.newInstance();
	   DocumentBuilder db=buidderfactory.newDocumentBuilder();
	   Document document=db.parse("src/1.xml");
	   NodeList nl=document.getElementsByTagName("age");
	   for(int i=0;i<nl.getLength();i++)
	   {
		   Node name=nl.item(i);
		   String s=name.getTextContent();
		   System.out.println(s);
	   }
}
}

猜你喜欢

转载自blog.csdn.net/weixin_43752167/article/details/88138161