zoukankan      html  css  js  c++  java
  • 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(获取该节点下及其子节点孙节点所有的文本节点内容)。

  • 相关阅读:
    Android smali 语法
    iOS 发布计费点测试
    how-to-stop-non-jailbroken-pirates-theory
    shell script
    文章收藏
    NB BAT批量读取图片文件属性
    JAVA LUHN
    MAC NDK 编译 Cocos2dx 问题
    Mac 下解压缩安装Android ndk bin 文件
    MVC Json输出调试信息
  • 原文地址:https://www.cnblogs.com/xiaoao/p/9612928.html
Copyright © 2011-2022 走看看