• XML


    package cn.zzsxt.demo;

    import java.io.FileInputStream;

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

    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;

    /**
    * 将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对象

    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();

    package cn.zzsxt.dom4j;

    import java.io.File;
    import java.util.Iterator;

    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;

    /**
    *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);
    }
    }
    }
    }

  • 相关阅读:
    [bzoj5278][Usaco2018 Open]Out of Sorts
    CF480Div2掉分记
    [bzoj3759]Hungergame
    [bzoj4184]shallot
    [原]Golang FileServer
    golang thrift 源码分析,服务器和客户端究竟是如何工作的
    golang thrift 总结一下网络上的一些坑
    德州扑克AI WEB版
    德州扑克AI实现 TexasHoldem Poker
    德州扑克游戏
  • 原文地址:https://www.cnblogs.com/seePoppy/p/6879972.html
Copyright © 2020-2023  润新知