java访问xml配置文件

Java访问xml配置文件

最近在做一个项目,要把一些经常用到的,而且基本没有修改的数据配置到xml文件中,然后要访问xml文件里面的相应数据,查阅许多资料,终于把它做出来了,在此记录一下。
我创建的是maven项目,然后MetroFactory.xml文件保存在resources目录下,具体内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<config>
    <metro>
        <id>1</id>
        <name>一号线</name>
        <child>
            <id>1</id>
            <name>岗顶</name>
        </child>
        <child>
            <id>2</id>
            <name>石牌桥</name>
        </child>
    </metro>
    <metro>
        <id>2</id>
        <name>二号线</name>
        <child>
            <id>1</id>
            <name>大学城南</name>
        </child>
        <child>
            <id>2</id>
            <name>大学城北</name>
        </child>
    </metro>
</config>

主函数如下:

public class TestDemo02 {
    public static void main(String[]args){
        try{
            //创建工厂
            DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
            DocumentBuilder builder=factory.newDocumentBuilder();
            Document doc;
            //创建document对象
            doc=builder.parse(new File("src/main/resources/MetroFactory.xml"));
            //获取根节点,即我的配置文件里面的config
            Element root=doc.getDocumentElement();
            //获取子节点数组
            NodeList metroList=root.getChildNodes();
            for(int i=0;i<metroList.getLength();i++){
                Node metroNode=metroList.item(i);
                if(metroNode!=null){
                    if(metroNode.getFirstChild()==null){
                        continue;
                    }
                    //当获取节点不为空时
                    for(Node node=metroNode.getFirstChild();node!=null;node=node.getNextSibling()){
                        if(node.getNodeName().equals("id")){
                            System.out.println("id="+node.getFirstChild().getNodeValue());
                        }else if(node.getNodeName().equals("name")){
                            System.out.println("name="+node.getFirstChild().getNodeValue());
                        }else if(node.getNodeName().equals("child")){
                            for(Node child=node.getFirstChild();child!=null;child=child.getNextSibling()){
                                if(child.getNodeName().equals("id")){
                                    System.out.println("child-id:"+child.getFirstChild().getNodeValue());
                                }else if(child.getNodeName().equals("name")){
                                    System.out.println("child-name:"+child.getFirstChild().getNodeValue());
                                }
                            }
                        }
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

结果如下:
在这里插入图片描述
不过这里还有一个问题,我访问文件是通过相对路径访问的,但是当我们把项目打包后,相对文件访问是失败的,要装换为流来操作
如下:

            InputStream inputStream=this.getClass().getResourceAsStream("/MetroFactory.xml");
            doc=builder.parse(inputStream);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值