XML解析之 对元素属性,节点,的增删改查

来源:互联网 发布:java基础代码题 编辑:程序博客网 时间:2024/05/16 02:00
小弟初学,希望老鸟们多多指点,感激不尽。
、<?xml version="1.0" encoding="UTF-8" standalone="no"?><水果 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="TestNameSpace.xsd"><苹果 id="update">苹果</苹果><香蕉>香蕉</香蕉><葡萄>update group</葡萄><李子>中文</李子></水果>

JAVA 解析文件:

package hr.csdn.com;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.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class Dome3 {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubDocumentBuilderFactory factor=DocumentBuilderFactory.newInstance();try {DocumentBuilder builder=factor.newDocumentBuilder();Document doc=builder.parse(new File("src/Test.xml"));find(doc);//查找findAtt(doc);//查找属性creatElement(doc);//添加节点removeElements(doc);updateElements(doc);updateAtt(doc);//修改属性addAtt(doc);//添加节点属性remove(doc);//删除节点属性} catch (Exception e) {e.printStackTrace();}}private static void remove(Document doc){Node bana=doc.getElementsByTagName("香蕉").item(0);if(bana.getNodeType()==Node.ELEMENT_NODE){Element emelent=(Element) bana;emelent.removeAttribute("id");TransformerFactory factor=TransformerFactory.newInstance();try {Transformer former=factor.newTransformer();//创建转换工厂former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));//将内存的内容} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private static void addAtt(Document doc){Node banan=doc.getElementsByTagName("香蕉").item(0);if(banan.getNodeType()==Node.ELEMENT_NODE){Element element=(Element) banan;element.setAttribute("id","19");TransformerFactory factor=TransformerFactory.newInstance();try {Transformer former=factor.newTransformer();//创建转换工厂former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));//将内存的内容} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private static void updateAtt(Document doc) {Node apple=doc.getElementsByTagName("苹果").item(0);if(apple.getNodeType()==Node.ELEMENT_NODE){Element element=(Element) apple;//element.getAttributeNode("id").setNodeValue("update apple");element.getAttributeNode("id").setValue("update");TransformerFactory factor=TransformerFactory.newInstance();try {Transformer former=factor.newTransformer();//创建转换工厂former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));//将内存的内容} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private static void updateElements(Document doc) {Node group=doc.getElementsByTagName("葡萄").item(0);group.setTextContent("update group");TransformerFactory factor=TransformerFactory.newInstance();try {Transformer former=factor.newTransformer();//创建转换工厂former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));//将内存的内容} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void removeElements(Document doc) {Node group=doc.getElementsByTagName("葡萄").item(0);group.getParentNode().removeChild(group);TransformerFactory factor=TransformerFactory.newInstance();try {Transformer former=factor.newTransformer();//创建转换工厂former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));//将内存的内容} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void creatElement(Document doc) {NodeList shuiguos=doc.getElementsByTagName("水果");Node shuiguo=shuiguos.item(0);Node grap=doc.createElement("葡萄");//创建葡萄标签Node groupValue=doc.createTextNode("group");//创建葡萄标签中的内容grap.appendChild(groupValue);//将内容添加到标签shuiguo.appendChild(grap);//将葡萄添加到水果标签中shuiguo.insertBefore(grap, doc.getElementsByTagName("李子").item(0));TransformerFactory factor=TransformerFactory.newInstance();try {Transformer former=factor.newTransformer();//创建转换工厂former.transform(new DOMSource(doc),new StreamResult("src/Test.xml"));//将内存的内容} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void findAtt(Document doc) {NodeList nodelist=doc.getElementsByTagName("苹果");Node node=nodelist.item(0);if(node.getNodeType()==Node.ELEMENT_NODE){Element element=(Element)node;String name=element.getAttribute("id");System.out.println(name);}}private static void find(Document doc) {NodeList nodelist=doc.getElementsByTagName("水果");Node node=nodelist.item(0);//获取第一个水果元素String value=node.getTextContent();System.out.println(value);}}