[30天轻松掌握JavaWeb视频]-dom解析xml的增删查改

来源:互联网 发布:老七mob淘宝店 编辑:程序博客网 时间:2024/06/05 08:51

书架.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架><书><书名>钢铁是怎样炼成的</书名><作者>奥斯特洛夫斯基</作者><售价>69</售价></书><书><书名>呐喊</书名><作者>鲁迅</作者><售价>25</售价></书></书架>

代码

package DTD校验xml规范;import java.io.FileOutputStream;import java.io.IOException;import java.util.logging.StreamHandler;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.Transformer;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;public class testJAXPcrud {/** * @param args * 用dom方式对xml进行CRUD *///得到指定元素内容//@Testpublic void readElemnt() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");NodeList list = document.getElementsByTagName("书名");Node node = list.item(1);String content = node.getTextContent();System.out.println(content);}//得到所有标签//@Testpublic void readAllFlag() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");Node root = document.getElementsByTagName("书架").item(0);list(root);}private void list(Node node){if(node instanceof Element){System.out.println(node.getNodeName());}NodeList list = node.getChildNodes();for(int i = 0;i<list.getLength();i++){Node child = list.item(i);list(child);}}//得到元素属性的值 <书名 name="xxx">钢铁是怎样炼成的</书名>//@Testpublic void readFlagAttribute() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");Element bookname = (Element) document.getElementsByTagName("书名").item(0);String value = bookname.getAttribute("name");System.out.println(value);}//@Test//往指定标签下的指定位置插入子标签public void addAttribute() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");//创建要插入的节点Element price = document.createElement("售价");price.setTextContent("59.00元");//得到要插入位置的参考标签Element refNode = (Element) document.getElementsByTagName("售价").item(0);//得到要添加节点的父节点Element book = (Element) document.getElementsByTagName("书").item(0);//往book指定位置添加book.insertBefore(price, refNode);//把更新后内存里的内容写回xmlTransformerFactory tfactory = TransformerFactory.newInstance();Transformer tf = tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("书架.xml")));}//@Test//往指定标签下插入属性 <书名 name="xxx">钢铁是怎样炼成的</书名>public void addFlagAttribute() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");//得到要插入的标签Element element = (Element) document.getElementsByTagName("书名").item(0);element.setAttribute("name", "xxx");//把更新后内存里的内容写回xmlTransformerFactory tfactory = TransformerFactory.newInstance();Transformer tf = tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("书架.xml")));}//@Test//删除标签public void deleteFlag() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");//得到要删除的标签Element element = (Element) document.getElementsByTagName("售价").item(0);element.getParentNode().removeChild(element);//或者//得到要删除的标签的父标签//Element book = (Element) document.getElementsByTagName("书").item(0);//book.removeChild(element);//或者//element.removeAttribute("售价");//把更新后内存里的内容写回xmlTransformerFactory tfactory = TransformerFactory.newInstance();Transformer tf = tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("书架.xml")));}//@Test//更新售价标签public void updateFlag() throws Exception{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document= builder.parse("书架.xml");//得到要更新的标签Element element = (Element) document.getElementsByTagName("售价").item(0);element.setTextContent("69");//把更新后内存里的内容写回xmlTransformerFactory tfactory = TransformerFactory.newInstance();Transformer tf = tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("书架.xml")));}}

0 0
原创粉丝点击