zoukankan      html  css  js  c++  java
  • Java知识积累3-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();
    }

    }

    }

  • 相关阅读:
    python 冒泡排序
    数组
    git用法
    Leetcode 344. 反转字符串
    Leetcode 83. 删除排序链表中的重复元素
    【第一部分】01Leetcode刷题
    【C++ Primer | 07】常用算法
    【第一部分】10Leetcode刷题
    【第一部分】09Leetcode刷题
    【第一部分】07Leetcode刷题
  • 原文地址:https://www.cnblogs.com/ljbky/p/4540301.html
Copyright © 2011-2022 走看看