zoukankan      html  css  js  c++  java
  • Java知识积累-XML的DOM解析修改和删除方法

    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.TransformerFactoryConfigurationError;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;

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

    public class RemoveNodeTest {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;
    try {
    builder = factory.newDocumentBuilder();
    Document doc=builder.parse(RemoveNodeTest.class.getResourceAsStream("student.xml"));
    Element studentElenent=doc.createElement("student");
    studentElenent.setAttribute("id", "jredu003");
    Element name=doc.createElement("name");
    Text nameValue=doc.createTextNode("xiaohuang");
    name.appendChild(nameValue);
    Element age=doc.createElement("age");
    Text ageValue=doc.createTextNode("20");
    age.appendChild(ageValue);
    studentElenent.appendChild(name);
    studentElenent.appendChild(age);
    Element root = doc.getDocumentElement();
    NodeList studentNodes = root.getChildNodes();
    NodeList haha=root.getElementsByTagName("name");
    for (int i = 0; i < studentNodes.getLength(); i++) {
    Node node = studentNodes.item(i); // 因为空格也算是元素,所以要处理,不输出空格元素
    Node node1=haha.item(i);
    if (node.getNodeType() == Node.ELEMENT_NODE) {
    String id = node.getAttributes().getNamedItem("id")
    .getNodeValue();
    /* if(id.equals("003")){
    doc.getDocumentElement().replaceChild(studentElenent, node); //修改
    doc.getDocumentElement().removeChild(node); //删除
    }*/
    //删除中间的结点方式相同
    System.out.println(id);
    NodeList childs = node.getChildNodes();

    for (int j = 0; j < childs.getLength(); j++) {
    Node nodee = childs.item(j);
    if (nodee.getNodeType() == Node.ELEMENT_NODE) {
    String Aname = nodee.getFirstChild().getNodeValue();
    if(Aname.equals("张三")){
    nodee.setTextContent("hahah");
    nodee.getParentNode().removeChild(nodee); //删除单个中间结点的方法
    } //修改中间值的方法
    System.out.println(Aname);
    } else if (nodee.getNodeName().equals("age")) {
    String Aage = nodee.getFirstChild().getNodeValue();
    System.out.println(Aage);
    }
    }

    }
    }


    Transformer transformer=TransformerFactory.newInstance().newTransformer();
    transformer.transform(new DOMSource(doc),
    new StreamResult(new File("c:\a.xml")));


    } catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (TransformerConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (TransformerFactoryConfigurationError e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (TransformerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }

    }

  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/ljbky/p/4540300.html
Copyright © 2011-2022 走看看