zoukankan      html  css  js  c++  java
  • xml


    1
    <?xml version="1.0" encoding="UTF-8"?> 2 <books> 3 <book id="B001"> 4 <name>&lt;西游记</name> 5 <author>吴承恩</author> 6 <publisher>人民邮电出版社</publisher> 7 </book> 8 <book id="B002"> 9 <name>&amp;三国演义</name> 10 <author>罗贯中</author> 11 <publisher>清华大学出版社</publisher> 12 </book> 13 <book id="B003"> 14 <name>水浒传</name> 15 <author>施耐庵</author> 16 <publisher><![CDATA[<29]]></publisher> 17 </book> 18 </books>
    /**
     * 将xml文件转换成一个org.w3c.dom.Document对象
     * Document:文档树
     * Node:节点(Element元素,Attribute属性,Text文本..)
     *     getNodeType():获取Node节点的类型
     *  
     * NodeList:节点列表
     *  getLength():获取节点列表的个数
     *  item(int i):在节点列表中根据下标获取该下标对应的节点
     *  
     * Element:元素
     *  NodeList  getChildNodes():获取当前元素的子节点列表
     *  getAttribute(String attrName):获取指定属性名称对应的属性值
     *  getTextContent():获取该元素中的文本
     * 
     * 使用DOM解析xml文件的步骤:
     * 1.创建解析器工厂对象
     *             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     * 2.由 解析器工厂对象创建解析器对象
     *             DocumentBuilder  db = dbf.newDocumentBuilder();
     * 3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象
     *             Document document = db.parse(new FileInputStream("product.xml"));
     * 4.以Document对象为起点对DOM树的节点进行增删改查操作。
     *
     */
    public class TestDOM {
        public static void main(String[] args) throws Exception{
            //1.创建一个解析器工厂对象
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            //2.由 解析器工厂对象创建解析器对象
            DocumentBuilder  db = dbf.newDocumentBuilder();
            //3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象
            Document document = db.parse(new FileInputStream("product.xml"));
            //4.获取根节点:products
            Element productsElement = document.getDocumentElement();
             System.out.println(productsElement.getTagName());
            //获取根节点的子节点: product
            NodeList productNodeList = productsElement.getChildNodes();
            for (int i = 0; i < productNodeList.getLength(); i++) {
                Node node = productNodeList.item(i);//product #text
                if(node.getNodeType()==Node.ELEMENT_NODE){//判断该节点是否为元素
    //                System.out.println(node.getNodeName());
                    Element productElement = (Element)node;
                    String id = productElement.getAttribute("id");//通过属性名称获取属性的值
                    System.out.println("id="+id);
                    //获取product节点的子节点
                    NodeList productChildNodeList =productElement.getChildNodes();
                    for (int j = 0; j < productChildNodeList.getLength(); j++) {
                        Node childNode = productChildNodeList.item(j); 
                        if(childNode.getNodeType()==Node.ELEMENT_NODE){//判断该节点是否为元素 Node.ELEMENT_NODE值为1
                            Element childElement = (Element)childNode;//name,price,color....
                            String text = childElement.getTextContent();//获取文本节点的值
                            System.out.println("	"+childElement.getTagName()+"="+text);
                        }
                    }
                }
            }
        }
    }
    /**
     * 
     * 从src下将book.xml文件转换成一个org.w3c.dom.Document对象
     * Document:文档树
     * Node:节点(Element元素,Attribute属性,Text文本..)
     *     getNodeType():获取Node节点的类型
     *  
     * NodeList:节点列表
     *  getLength():获取节点列表的个数
     *  item(int i):在节点列表中根据下标获取该下标对应的节点
     *  
     * Element:元素
     *  NodeList  getChildNodes():获取当前元素的子节点列表
     *  getAttribute(String attrName):获取指定属性名称对应的属性值
     *  getTextContent():获取该元素中的文本
     * 
     * 使用DOM解析xml文件的步骤:
     * 1.创建解析器工厂对象
     *             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     * 2.由 解析器工厂对象创建解析器对象
     *             DocumentBuilder  db = dbf.newDocumentBuilder();
     * 3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象
     *             Document document = db.parse(new FileInputStream("product.xml"));
     * 4.以Document对象为起点对DOM树的节点进行增删改查操作。
     *
     */
    public class TestDOM2 {
        public static void main(String[] args) throws Exception{
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
    //        Document document = db.parse("src/book.xml");//如果文件的路径不正确将抛出FileNotFoundException异常
            //getResourceAsStream("/book.xml")--->将类路径根目录下的book.xml转换成输入流
            InputStream ips = TestDOM2.class.getResourceAsStream("/book.xml");
            Document document = db.parse(ips);//如果文件的路径不正确将抛出FileNotFoundException异常
            Element booksElement = document.getDocumentElement();
            NodeList bookNodeList = booksElement.getChildNodes();
            for (int i = 0; i < bookNodeList.getLength(); i++) {
                Node node = bookNodeList.item(i);
                if(node.getNodeType()==Node.ELEMENT_NODE){
                    Element  bookElement = (Element)node;
                    String id = bookElement.getAttribute("id");
                    System.out.println("id="+id);
                    NodeList bookChildNodeList = bookElement.getChildNodes();
                    for (int j = 0; j < bookChildNodeList.getLength(); j++) {
                        Node childNode = bookChildNodeList.item(j);
                        if(childNode.getNodeType()==Node.ELEMENT_NODE){
                            Element childElement = (Element)childNode;
                            String text = childElement.getTextContent();
                            System.out.println("	"+text);
                        }
                    }
                }
            }
        }
    }
    dom4j:第三方的解析和写入xml的专有类库
    /**
     *dom4j:第三方的解析和写入xml的专有类库
     *步骤:
     *1. 将dom4j类库(dom4j-1.6.1.jar)添加到项目中.
     *        新建一个lib/libs目录,将类库复制到该目录,右键-->add to build path
     *2.使用dom4j的工具加载xml文件,并将xml文件转换成一个Document对象
     *3.对Document对象进行操作(获取子元素,属性,文本等内容)
     *
     */
    public class TestDom4j {
        public static void main(String[] args) throws Exception{
            //1.创建SAXReader对象
            SAXReader saxReader = new SAXReader();
            //2.利用SAXReader的read方法将文件转换为一个Document对象
            Document document = saxReader.read(new File("product.xml"));
            //3.获取Document对象中的元素,元素的属性,文本等信息
            Element root = document.getRootElement();//获取文档的根节点 products
            Iterator<Element> productIter = root.elementIterator();//获取子元素的迭代器
            while(productIter.hasNext()){
                Element productElement = productIter.next();//获取product元素
                String id = productElement.attributeValue("id");//通过属性名称获取该属性的值
                System.out.println("id="+id);
                Iterator<Element> childIter = productElement.elementIterator();//获取product元素的迭代器
                while(childIter.hasNext()){
                    Element childElement = childIter.next();//获取product元素的子元素(name,price....)
                    String name = childElement.getName();//获取元素名称
                    String text = childElement.getText();//获取文本节点信息
                    System.out.println("	"+name+"="+text);
                }
            }
        }
    }
  • 相关阅读:
    《Java从入门到精通》第十三章学习笔记
    Java实训项目--影碟管理软件
    《Java从入门到精通》第十二章学习笔记
    《Java从入门到精通》第十一章学习笔记
    《Java从入门到精通》第十章学习笔记
    《Java从入门到精通》第九章学习笔记
    Swift游戏实战-跑酷熊猫 02 创建熊猫类
    Swift游戏实战-跑酷熊猫 01 创建工程导入素材
    Swift游戏实战-跑酷熊猫 00 游戏预览
    Swift游戏实战-跑酷熊猫(一) 简介 (含源代码)
  • 原文地址:https://www.cnblogs.com/fwdsz/p/6821093.html
Copyright © 2011-2022 走看看