xml文档对象模型doc

对与DOM来说 ,一切都是节点Node;

Document可以看成一个节点,Element可以看成一个节点,Text可以看成一个节点,

   封装出来的对象都可以看成节点Node;

③在JDK中,NodeDoucument(文档),Element(标签元素),Text(文本对象), Attr(属性对象)的父接口;

原生API解析XML

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("C:\\Users\\Administrator\\eclipse-workspace\\day35\\ghhj\\contacts.xml");
        Element contact= doc.getDocumentElement();//根元素

NodeList names = contact.getElementsByTagName("name");
        Element name = (Element) names.item(1);
        System.out.println(name.getTextContent());

或     NodeList linkmans = doc.getElementsByTagName("linkman");
             linkmans.item(1).getElementsByTagName("name");


        Element linkman = (Element) linkmans.item(1);

把第一个联系人的邮箱改掉

public void modify()throws Exception {

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("C:\\Users\\Administrator\\eclipse-workspace\\day35\\ghhj\\contacts.xml");
        Element contact= doc.getDocumentElement();//根元素

Element contact = doc.getDocumentElement();
       
        Element linkman = (Element) (contact.getElementsByTagName("linkman").item(0));
    
        Element email= (Element)(linkman.getElementsByTagName("email").item(0));
      
        email.setTextContent("[email protected]");
        
   /////使用TransFormer类 把 内存中的数据 同步到xml里面去;
        Transformer trant = TransformerFactory.newInstance().newTransformer();
    
        Source source = new DOMSource(doc);
        Result result= new StreamResult(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
       
        trant.transform(source,result);
    }

//添加一个联系人信息
    @Test
    public void add()throws Exception {
        //拿到document对象
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //获取根节点元素
        Element contact = doc.getDocumentElement();
        //创建所有节点对象
        Element linkman = doc.createElement("linkman");
        Element name = doc.createElement("name");
        name.setTextContent("李四");
        Element email = doc.createElement("email");
        email.setTextContent("[email protected]");
        Element address = doc.createElement("address");
        address.setTextContent("安徽省");
        Element group = doc.createElement("group");
        group.setTextContent("111111");
        //将子标签添加到linkman标签内
        linkman.appendChild(name);
        linkman.appendChild(email);
        linkman.appendChild(address);
        linkman.appendChild(group);
        //将liakman添加到contact标签内
        contact.appendChild(linkman);
        
        //执行doc对象与xml文件同步
        //1.获取Transformer对象
        Transformer trant = TransformerFactory.newInstance().newTransformer();
        //2.创建Source对象(绑定doc对象)和Result对象(绑定文件对象)
        Source xmlSource = new DOMSource(doc);
        Result outputTarget = new StreamResult(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //3.将doc对象同步到xml文件中
        trant.transform(xmlSource, outputTarget);
    }

// 删除第三个联系人;
    @Test
    public void delete()throws Exception {
        //拿到document对象
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //获取根节点元素
        Element contact = doc.getDocumentElement();
        //获取所有linkman元素
        NodeList linkmans = contact.getElementsByTagName("linkman");
        //将contact的第三个子节点(linkman)删除
        contact.removeChild(linkmans.item(2));

        
        //执行doc对象与xml文件同步
        //1.获取Transformer对象
        Transformer trant = TransformerFactory.newInstance().newTransformer();
        //2.创建Source对象(绑定doc对象)和Result对象(绑定文件对象)
        Source xmlSource = new DOMSource(doc);
        Result outputTarget = new StreamResult(new File("G:\\EclipseWorkSpace\\testXml\\src\\com\\cj\\JAXP\\contacts.xml"));
        //3.将doc对象同步到xml文件中
        trant.transform(xmlSource, outputTarget);
    }
}

猜你喜欢

转载自www.cnblogs.com/wzscom/p/10288802.html