package ex;

import java.io.File;
import java.io.FileOutputStream;

import javax.xml.parsers.*;
import javax.xml.transform.Result;
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.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Dom1 {

    public static void main(String[] args) throws Exception {
        //创建Dom解析工厂
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        //创建Dom解析器
        DocumentBuilder dBuilder =dbf.newDocumentBuilder();
        //得到解析文档
        Document doc=dBuilder.parse("1.xml");

        Element root=doc.getDocumentElement();

        NodeList nodeList=doc.getElementsByTagName("节日");
        for(int i=0;i<nodeList.getLength();i++){
            //增加了元素
            /*Element dat=doc.createElement("日期");
            dat.setTextContent("2019-12-20");
            Node node=nodeList.item(i);
            node.appendChild(dat);*/  

            Node node=nodeList.item(i);
            NodeList nodeList1=node.getChildNodes();//节日的所有子节点
            for(int j=0;j<nodeList1.getLength();j++){
                Node node1=nodeList1.item(j);
                if(node1.getNodeType()==Node.ELEMENT_NODE){//节日的所有元素节点
                    if(node1.getNodeName().trim().equals("起源国家")){
                        if(node1.getTextContent().trim().equals("中国")){
                            node1.setTextContent("大中国");
                        }
                    }
                }
            }
        }
        //创建转换工程
        TransformerFactory tff=TransformerFactory.newInstance();
        //创建转换器
        Transformer tf=tff.newTransformer();
        //进行转换
        /*DOMSource domsource=new DOMSource(doc);
        File file=new File("1.xml");
        FileOutputStream fos=new FileOutputStream(file);
        StreamResult xmlResult=new StreamResult(fos);
        tf.transform(domsource,xmlResult);*/
        tf.transform(new DOMSource(doc), new StreamResult("1.xml"));

        //System.out.println("hhhh.."); //证明引入文件ok
        /*Element root=doc.getDocumentElement();//得到根元素
        NodeList nodeList=doc.getElementsByTagName("节日");
        for(int i=0;i<nodeList.getLength();i++){
            Node node=nodeList.item(i);//得到节日
            //System.out.println(node.getNodeName()+":"+node.getTextContent());
            NodeList nodeList1=node.getChildNodes();//得到节日的子元素
            for(int j=0;j<nodeList1.getLength();j++){
                Node node1=nodeList1.item(j);
                if(node1.getNodeType()==Node.ELEMENT_NODE)
                System.out.println(node1.getNodeName()+":"+node1.getTextContent());
            }
            System.out.println();
        }*/

    }

}

package ex;

import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

public class Dom2 {
    public static void main(String[] args) throws Exception{
        //创建Dom解析工厂
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        //创建Dom解析器
        DocumentBuilder dBuilder=dbf.newDocumentBuilder();
        //创建文档
        Document doc=dBuilder.newDocument();

        Element root=doc.createElement("班级");
        doc.appendChild(root);
        for(int i=0;i<3;i++){
            Element stu=doc.createElement("学生");
            Element name=doc.createElement("名字");
            Element age=doc.createElement("年龄");
            Element info=doc.createElement("简介");
            root.appendChild(stu);
            switch(i){
            case 0:
                name.setTextContent("杨过");
                stu.appendChild(name);

                age.setTextContent("18");
                stu.appendChild(age);

                info.setTextContent("我是一个可怜的人...");
                stu.appendChild(info);
                break;
            case 1:
                name.setTextContent("小龙女");
                stu.appendChild(name);

                age.setTextContent("23");
                stu.appendChild(age);

                info.setTextContent("过儿,where do you...");
                stu.appendChild(info);
                break;
            case 2:
                name.setTextContent("小林");
                stu.appendChild(name);

                age.setTextContent("23");
                stu.appendChild(age);

                info.setTextContent("你们怎么可以这样子...");
                stu.appendChild(info);
                break;

            }
        }

        /*Element stu=doc.createElement("学生");
        root.appendChild(stu);

        Element name=doc.createElement("名字");
        name.setTextContent("杨过");
        stu.appendChild(name);

        Element age=doc.createElement("年龄");
        age.setTextContent("18");
        stu.appendChild(age);

        Element info=doc.createElement("简介");
        info.setTextContent("我是一个可怜的人...");
        stu.appendChild(info);
        */

        //创建转换工厂
        TransformerFactory tff=TransformerFactory.newInstance();
        //创建转换器
        Transformer tf=tff.newTransformer();
        //生成文件
        tf.transform(new DOMSource(doc), new StreamResult("2.xml"));

    }
}

package ex;

import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.*;

import org.w3c.dom.*;

public class Dom3 {
    public static void main(String[] args) throws Exception{
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder=dbf.newDocumentBuilder();
        Document doc=dBuilder.newDocument();

        Element root=doc.createElement("一月份人员工资");
        doc.appendChild(root);
        for(int i=0;i<5;i++){
            Element name=doc.createElement("姓名");
            Element salary=doc.createElement("月薪");
            switch(i){
            case 0:
                root.appendChild(name);
                name.setTextContent("贾丽\n\t\t");
                name.appendChild(salary);
                salary.setAttribute("职务","普通员工" );
                salary.setTextContent("2350");
                break;
            case 1:
                root.appendChild(name);
                name.setTextContent("李瑞珍\n\t\t");
                name.appendChild(salary);
                salary.setAttribute("职务","经理" );
                salary.setTextContent("1879");
                break;
            case 2:
                root.appendChild(name);
                name.setTextContent("黄颖\n\t\t");
                name.appendChild(salary);
                salary.setAttribute("职务","经理" );
                salary.setTextContent("3200");
                break;
            case 3:
                root.appendChild(name);
                name.setTextContent("朱红霞\n\t\t");
                name.appendChild(salary);
                salary.setAttribute("职务","普通员工" );
                salary.setTextContent("1680");
                break;
            case 4:
                root.appendChild(name);
                name.setTextContent("黄青霞\n\t\t");
                name.appendChild(salary);
                salary.setAttribute("职务","普通员工" );
                salary.setTextContent("1700");
                break;
            }
        }

        TransformerFactory tff=TransformerFactory.newInstance();
        Transformer tf=tff.newTransformer();
        tf.transform(new DOMSource(doc), new StreamResult("5.xml"));
    }
}

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<一月份人员工资>
    <姓名>贾丽
        <月薪 职务="普通员工">2350</月薪>
    </姓名>
    <姓名>李瑞珍
        <月薪 职务="经理">1879</月薪>
    </姓名>
    <姓名>黄颖
        <月薪 职务="经理">3200</月薪>
    </姓名>
    <姓名>朱红霞
        <月薪 职务="普通员工">1680</月薪>
    </姓名>
    <姓名>黄青霞
        <月薪 职务="普通员工">1700</月薪>
    </姓名>
</一月份人员工资>

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<班级>
    <学生>
        <名字>杨过</名字>
        <年龄>18</年龄>
        <简介>我是一个可怜的人...</简介>
    </学生>
    <学生>
        <名字>小龙女</名字>
        <年龄>23</年龄>
        <简介>过儿,where do you...</简介>
    </学生>
    <学生>
        <名字>小林</名字>
        <年龄>23</年龄>
        <简介>你们怎么可以这样子...</简介>
    </学生>
</班级>

<?xml version="1.0" encoding="UTF-8" standalone="no"?><节日表>
    <节日>
        <名称>冬至</名称>
        <起源国家>大中国</起源国家>
        <习俗>吃汤圆或吃饺子</习俗>
    <日期>2019-12-20</日期></节日>
    <节日>
        <名称>圣诞节</名称>
        <起源国家>外国</起源国家>
        <习俗>吃皮蛋</习俗>
    <日期>2019-12-20</日期></节日>
    <节日>
        <名称>元旦</名称>
        <起源国家>大中国</起源国家>
        <习俗>放假</习俗>
    <日期>2019-12-20</日期><日期>2019-12-20</日期></节日>
</节日表>