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"))); } }
相关文章推荐
- jaxp解析器用dom方式操作xml文档的总结
- jaxp解析器用dom方式操作xml文档的总结
- 使用JAXP的DOM方式解析XML文档(能力工场)
- java对XML文档的操作之dom(使用jaxp,sun公司的自带包)
- 使用JAXP的DOM方式解析XML文档(能力工场)
- 用“XML解析开发包Jaxp”对XML文件进行Dom方式的CRUD操作
- java操作xml文档(一) DOM方式
- dom解析方式对xml文档进行操作
- 利用JAXP开发包进行DOM方式解析XML文档
- 【XML解析】(1)Java下使用JAXP中的DOM解析方式对XML文档进行解析
- qt xml之DOM方式来操作XML文档
- jaxp对xml文档进行dom解析并进行CRUD操作
- 解析php DOMElement 操作xml 文档的实现代码
- 四种操作xml的方式: SAX, DOM, JDOM , DOM4J的比较
- XML文档的DOM和SAX解析方式详解
- 四种操作xml的方式: SAX, DOM, JDOM , DOM4J的比较
- java中操作xml几种方式的比较和代码示例(DOM,SAX,JDOM,DOM4J)
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较
- JAVASCRIPT中使用DOM操作XML文档
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)