您的位置:首页 > 其它

JAXP----DOM方式操作XML文档

2014-01-07 09:18 363 查看
import java.io.File;
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.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import com.sun.org.apache.xalan.internal.xsltc.cmdline.Transform;

public class demo1 {

/**
* 用jaxp操作xml文档  增删改查
*
* @param args
* @throws ParserConfigurationException
* @throws IOException
* @throws SAXException
*/
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException {
// 获取工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 产生解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文档,
Document document = builder.parse(new File("src/book.xml"));

read(document);
}
// 读取XML文档 ,得到售价节点
public static void read(Document document) {
NodeList list = document.getElementsByTagName("售价"); /* NodeList */
Node price = list.item(0);
String value = price.getTextContent(); // 获取节点的值
System.out.println(value);
}

// 更新XML文档中的值
@Test
public void update() throws ParserConfigurationException, SAXException,
IOException, TransformerException {
// 获取工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 产生解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文档,
Document document = builder.parse(new File("src/book.xml"));
// 更新内存中的值
NodeList list = document.getElementsByTagName("售价");
Node price = list.item(0);
price.setTextContent("110");
// 将内存中的值写入XML文档中
TransformerFactory transform = TransformerFactory.newInstance();
// 得到转换器
Transformer transformer = transform.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(
"src/book.xml"));
}
@Test
public void add() throws ParserConfigurationException, SAXException,
IOException, TransformerException {
// 获取工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 产生解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文档,
Document document = builder.parse(new File("src/book.xml"));
Node price = document.createElement("作者");
price.setTextContent("张孝祥");

// 得到父节点
Node pranet = document.getElementsByTagName("书").item(0);
pranet.appendChild(price);
TransformerFactory tf=	TransformerFactory.newInstance();
Transformer ts=	tf.newTransformer();
ts.transform(new DOMSource(document), new StreamResult(new File("src/book.xml")));

}
//插向指定节点
@Test
public void add2() throws ParserConfigurationException, SAXException,
IOException, TransformerException {
// 获取工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 产生解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文档,
Document document = builder.parse(new File("src/book.xml"));

Node price = document.createElement("路");
price.setTextContent("路承陈");

// 得到父节点
Node pranet = document.getElementsByTagName("书").item(0);
pranet.insertBefore(price, document.getElementsByTagName("售价").item(0));
TransformerFactory tf = TransformerFactory.newInstance();
Transformer ts = tf.newTransformer();
ts.transform(new DOMSource(document), new StreamResult(new File("src/book.xml")));

}
@Test
public void delete() throws ParserConfigurationException, SAXException, IOException, TransformerException{
// 获取工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 产生解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文档,
Document document = builder.parse(new File("src/book.xml"));
Node price =document.getElementsByTagName("售价").item(0);
price.getParentNode().removeChild(price);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer ts = tf.newTransformer();
ts.transform(new DOMSource(document), new StreamResult(new File("src/book.xml")));

}
//操作XML文档属性*** 操作XML文档的元素时,一般都把元素当作node对象,但是发现node不好使时,转换为Element
@Test
public void  updateAttribute() throws ParserConfigurationException, SAXException, IOException, TransformerException{
// 获取工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 产生解析器
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文档,
Document document = builder.parse(new File("src/book.xml"));
//转换为Element
Element book =(Element)document.getElementsByTagName("书").item(0);
book.setAttribute("name", "yyyy");

TransformerFactory tf = TransformerFactory.newInstance();
Transformer ts = tf.newTransformer();
ts.transform(new DOMSource(document), new StreamResult(new File("src/book.xml")));

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml SAX