package myDom;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Attr;
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{//throws Exception 把异常都抛弃,不处理异常
        //创建一个Dom解析工厂
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        //从解析工厂创建一个解析器
        DocumentBuilder dBuilder=dbf.newDocumentBuilder();
        Document doc=dBuilder.parse("1.xml");
        String version=doc.getXmlVersion();
        System.out.println("版本号:"+version);
        String encoding=doc.getXmlEncoding();
        System.out.println("编码:"+encoding);
        //得到片名元素的集合
        NodeList nodeList=doc.getElementsByTagName("片名");
        for(int i=0;i<nodeList.getLength();i++)
        {
            Node node=nodeList.item(i);
            System.out.println(node.getNodeName()+":"+node.getTextContent());
        }
        //得到根节点
        Element rootEl=doc.getDocumentElement();
        System.out.println("根节点:"+rootEl.getTagName());
        //得到子节点
        NodeList nodeList1=rootEl.getChildNodes();
        for(int i=0;i<nodeList1.getLength();i++)
        {
            Node node1=nodeList1.item(i);
            if(node1.getNodeType()==Node.ELEMENT_NODE)//判断该节点是否为元素节点
            {
                Element el=(Element)node1;
                String value=el.getAttribute("推荐指数");
                System.out.println(value);
                //得到<武侠>这个元素的所有子节点
                NodeList nodeList2=node1.getChildNodes();
                for(int j=0;j<nodeList2.getLength();j++)
                {
                    //取出子节点
                    Node node2=nodeList2.item(j);
                    if(node2.getNodeType()==Node.ELEMENT_NODE)
                    {
                        System.out.println(node2.getNodeName()+": "+node2.getTextContent());
                    }
                }
                //System.out.println(node1.getNodeName()+": "+node1.getTextContent());//有文本节点和元素节点,在此操作打印出来会有“#text;”这个东西,是因为在根节点后有一个换行,他是文本节点,而他的子元素是元素节点
                System.out.println();
            }

        }
    }

}

package myDom1;

import javax.xml.parsers.*;

import org.w3c.dom.*;

public class Dom1 {
    public static void main(String[] args) throws Exception
    {
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder=dbf.newDocumentBuilder();
        Document doc=dBuilder.parse("1.xml");

        Element rootEl=doc.getDocumentElement();
        System.out.println(rootEl.getTagName());
        NodeList nodeList1=rootEl.getChildNodes();
        for(int i=0;i<nodeList1.getLength();i++)
        {
            Node node1=nodeList1.item(i);
            if(node1.getNodeType()==Node.ELEMENT_NODE)
            {
                System.out.println(node1.getNodeName());
                NodeList nodeList2=node1.getChildNodes();
                for(int j=0;j<nodeList2.getLength();j++)
                {
                    Node node2=nodeList2.item(j);
                    if(node2.getNodeType()==Node.ELEMENT_NODE)
                    {
                        System.out.println(node2.getNodeName()+": "+node2.getTextContent());
                    }
                }
                System.out.println();
            }
        }
    }
}

<?xml version="1.0" encoding="UTF-8" ?>
<雇员列表>
  <雇员>
      <姓名>王玉强</姓名>
      <年龄>25岁</年龄>
      <工资>3190元</工资>
  </雇员>
  <雇员>
     <姓名>唐晓敏</姓名>
     <年龄>22岁</年龄>
     <工资>2340元</工资>
  </雇员>
</雇员列表>

<?xml version="1.0" encoding="UTF-8"?>
<电视剧>
    <武侠 推荐指数="*****">
        <片名>射雕英雄传</片名>
        <男主角>雕儿</男主角>
        <女主角>黄蓉</女主角>
        <简介>这是一部真实的...</简介>
    </武侠 >
    <武侠 推荐指数="*****">
        <片名>熊大熊二</片名>
        <男主角>光头强</男主角>
        <女主角>熊</女主角>
        <简介>欢迎走进动物世界...</简介>
    </武侠>
    <武侠 推荐指数="*****">
        <片名>亲爱的</片名>
        <男主角>小明</男主角>
        <女主角>小红</女主角>
        <简介>这是感人的乡村...</简介>
    </武侠>
</电视剧>