• java使用document解析xml文件


    准备工作:

    1创建java工程

    2创建xml文档。

    完成后看下面代码:

    import org.w3c.dom.*;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    public class Main {
    
        public static void main(String[] args)  throws Exception {
            //创建一个文档解析器工厂
            DocumentBuilderFactory fac= DocumentBuilderFactory.newInstance();
    
            //用上面的工厂创建一个文档解析器
            DocumentBuilder builder=fac.newDocumentBuilder();
    
            //用上面的文档解析器解析一个文件放到document对象里
            Document doc=builder.parse("src/server.xml");
    
            //获取文档中节点名称为Listener的所有节点,并返回一个节点集合
            NodeList listenerList=doc.getElementsByTagName("Listener");
            System.out.println("一共有"+listenerList.getLength()+"个节点");
    
            //遍历整个集合(把所有标签名为Listener的节点一个一个拿出来
            for (int i=0;i<listenerList.getLength();i++){
                System.out.println("===========这是第"+(i+1)+"个listener节点的开始:===========");
                //把集合里的每一个listener节点分别拿出来
                Node node=listenerList.item(i);
                //再把上一个节点中的所有属性拿出来
                NamedNodeMap nodeMap= node.getAttributes();
                System.out.println("第"+(i+1)+"个节点一共有"+nodeMap.getLength()+"个属性");
    
                //遍历所有属性
                for(int j=0;j<nodeMap.getLength();j++){
                    Node node1=nodeMap.item(j);
                    System.out.println("第"+(j+1)+"个属性的名称是"+node1.getNodeName());
                    System.out.println("第"+(j+1)+"个属性的值是"+node1.getNodeValue());
                }
    //获取节点的所有子节点,注意会把所有换行符也解析为子节点
    NodeList childNode=node.getChildNodes();

    //遍历所有子节点
    for(int k=0;k<childNode.getLength();k++){
    if(childNode.item(k).getNodeType()==Node.ELEMENT_NODE){
    //这个过滤条件是只将标签节点保留(换行符的节点就删去)
    }
    System.out.println(
    "===========这是第"+(i+1)+"个节点的结束:==========="); } } }

    为了方便记忆,在这里拆解一下。我们的目的是解析一个xml文档,所以就需要一个工具。这个工具就叫做DocumentBuilder类的对象,那么这个工具怎么来的呢?是从工厂里面生产出来的,那么工厂怎么来的呢?就得先创建一个工厂:DocumentBuilderFactory。在本例中解析了xml文档中所有名为Listener标签的所有属性。

    本人其实非常渴望研究更深入的东西,但现在实在是刚毕业,么办法,所以只能研究研究一些场景怎么用,怎么解析xml文档,至于到底内部是如何实现的,希望各位读者有时间一定要深究下去,这里可能涉及到java的动态代理和工厂模式。

    注意:1.<book>红楼梦</book>,当获取到book节点时,其节点名称是book,值是null!!!。因为解析过程中把红楼梦作为book节点的子节点解析。所以要想获取红楼梦,就必须在book节点处获取第一个子节点。也可以用book节点获取textContent(获取该节点下及其子节点孙节点所有的文本节点内容)。

  • 相关阅读:
    Java字节流Stream的使用,创建方法
    Java中字节流和字符流复制文件
    Java中的IO流,Input和Output的用法,字节流和字符流的区别
    Java中String的常用方法总结
    java中File类的常用方法总结
    Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。
    Mysql 5.5从零开始学阅读笔记
    RDS for MySQL有哪些限制
    mysql查看建表语句命令
    MYSQL查看当前正在使用的数据库命令
  • 原文地址:https://www.cnblogs.com/xiaoao/p/9612928.html
Copyright © 2020-2023  润新知