ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DOM文件

2022-07-24 11:07:16  阅读:138  来源: 互联网

标签:xml 文件 DOM item student import document 节点


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE students SYSTEM "student.dtd">
<students>
    <student id="1">
        <name>王同</name>
        <class>java</class>
        <score>89</score>
    </student>
    <student id="2">
        <name>李佳</name>
        <class>sql</class>
        <score>58</score>
    </student>
    <student id="3">
        <name>李白</name>
        <class>python</class>
        <score>90</score>
    </student>
</students>

 

        <!ELEMENT students (student+)>
        <!ELEMENT student (name,class,score)>
        <!ATTLIST student id CDATA #IMPLIED>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT class (#PCDATA)>
        <!ELEMENT score (#PCDATA)>

 

public class TestXML {
    public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {
        //1.得到document
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
        //2.解析和加载xml文件到内存中去
        Document document = documentBuilder.parse("student.xml");
        //3.返回文档中的所有子节点
        NodeList nodeList = document.getChildNodes();
        Node root = nodeList.item(nodeList.getLength() - 1);
        System.out.println("root:" + root.getNodeName());//students
        //4.再查找他的子节点
        NodeList childNodes = root.getChildNodes();
        for (int i = 0; i < childNodes.getLength(); i++) {
            Node item = childNodes.item(i);
            if ("student".equals(item.getNodeName())) {
                NodeList nodes = item.getChildNodes();
                for (int j = 0; j < nodes.getLength(); j++) {
                    Node node = nodes.item(j);
                    if ("name".equals(node.getNodeName())) {
                        System.out.println("name:" + node.getTextContent());
                    } else if ("class".equals(node.getNodeName())) {
                        System.out.println("class:" + node.getTextContent());
                    } else if ("score".equals(node.getNodeName())) {
                        System.out.println("score:" + node.getTextContent());
                    }
                }
            }
        }
    }
}

 

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;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.FileOutputStream;
import java.io.IOException;

public class UpdateXML {
    public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException, TransformerException {
        //使用DOM对XML文件进行数据修改
        //1.得到document
        DocumentBuilderFactory dbf;
        dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
        //解析和加载xml文件到内存中去
        Document document = documentBuilder.parse("student.xml");
        //1.删除某个节点
//        NodeList list = document.getElementsByTagName("student");
//        for (int i = 0; i < list.getLength(); i++) {
//            Element item = (Element)list.item(i);
//            //node:节点(文本节点),element:元素
//            //凡是元素都是节点,但是节点不一定都是元素,例如:一个单纯的回车也是节点
////            System.out.println(item.getAttribute("id"));
//            if ("2".equals(item.getAttribute("id"))){
//                item.getParentNode().removeChild(item);
//            }
//        }


        //2.添加节点
//        //student(name class score)
//        Element student = document.createElement("student");
//        student.setAttribute("id", "3");//设置属性值
//        //name
//        Element stuName = document.createElement("name");//创建节点
//        stuName.setTextContent("李白");//设置节点内容
//        student.appendChild(stuName);//添加节点
//        //class
//        Element stuClass = document.createElement("class");
//        stuClass.setTextContent("python");
//        student.appendChild(stuClass);
//        //score
//        Element stuScore = document.createElement("score");
//        stuScore.setTextContent("90");
//        student.appendChild(stuScore);
//        //找到根节点students
//        NodeList nodeList = document.getElementsByTagName("students");
//        Node students = nodeList.item(nodeList.getLength() - 1);
//        students.appendChild(student);

        //修改:李白-》李清照
        //1.查找节点
        NodeList student3 = document.getElementsByTagName("student");
        for (int i = 0; i < student3.getLength(); i++) {
            Element item = (Element)student3.item(i);
            if ("3".equals(item.getAttribute("id"))){
                Node name = item.getElementsByTagName("name").item(0);
                //2.修改节点内容
                name.setTextContent("李清照");
                break;
            }
        }


        //保存成XML文件
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource domSource = new DOMSource(document);
        // 设置编码类型
        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        StreamResult result = new StreamResult(new FileOutputStream("student.xml"));
        // 把DOM树转换为XML文件
        transformer.transform(domSource, result);

    }
}

 

标签:xml,文件,DOM,item,student,import,document,节点
来源: https://www.cnblogs.com/linlinmailbox/p/16514054.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有