美文网首页
XML文件的解析

XML文件的解析

作者: 愚思 | 来源:发表于2021-10-30 14:22 被阅读0次

使用 dom4j 进行解析

1.添加dom4j的依赖
2.使用 File 加载到本地文件后,交给SAXReader解析,它解析完成后将xml文件中的标签包装成一个Document对象返回,需要操作的元素,都在这个Document对象中。

//灵活更换为需要的路径
String filePath = "C:\\Users\\CHY\\Desktop\\restUrl.xml";
//读取xml配置文件
File file = new File(filePath);
//交给SAXRead去解析
Document document = new SAXReader().read(file);

3.根据需要去获取标签值或者属性值,进行自己的逻辑处理。
4.简单演示
A、引入依赖

<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>

B、现有XML文件如下

<services>
    <service isUsable="true">
        <restUrl>/register/user-info/create</restUrl>
        <serviceID>USER_RegisterUserInfo_A</serviceID>
    </service>
    <service isUsable="true">
        <restUrl>/update/user-info/update</restUrl>
        <serviceID>USER_UpdateUserInfo_U</serviceID>
    </service>
    <service isUsable="false">
        <restUrl>/delete/user-info/delete</restUrl>
        <serviceID>USER_DeleteUserInfo_D</serviceID>
    </service>
</services>

C、代码部分

public static void main(String[] args) throws DocumentException {
    String filePath = "C:\\Users\\CHY\\Desktop\\restUrl.xml";
    File file = new File(filePath);
    Document document = new SAXReader().read(file);
    Element root = document.getRootElement();
    //根元素下的所有
    List<Element> elements = root.elements();
    for (Element service : elements) {
        List<Element> delegateElement = service.elements();
        for (Element e : delegateElement) {
            //变迁名称的匹配,并获取其值
            if ("restUrl".equals(e.getName())) {
                System.out.println("restUrl====" + e.getStringValue());
            }
            if ("serviceID".equals(e.getName())) {
                System.out.println("serviceID====" + e.getStringValue());
            }
        }
    }
}

D、运行截图


xml读取

E、代码中有一个service标签的isUsable标签为false,只要在循环上加上对属性的判断就好了,上代码。

//根元素下的所有
List<Element> elements = root.elements();
//获取到services节点下的service节点的List
List<Element> list = root.elements("service");
System.out.println(list.size());
for (Element service: elements){
    //当前service有效时才回去解析
    if ("true".equals(service.attributeValue("isUsable"))){
        List<Element> delegateElement = service.elements();
        for (Element e:delegateElement) {
            //变迁名称的匹配,并获取其值
            if ("restUrl".equals(e.getName())){
                System.out.println("restUrl===="+e.getStringValue());
            }
            if ("serviceID".equals(e.getName())){
                System.out.println("serviceID===="+e.getStringValue());
            }
        }
    }
}

截图,看结果,总共有三个标签,但只有两个有效


有效标签的解析

如果在标签里,涉及到多个属性的,其实可以考虑将service标签里的内容封装到Service的对象中去,进而添加到List或是Map中去,用的时候直接去取出就行。

相关文章

网友评论

      本文标题:XML文件的解析

      本文链接:https://www.haomeiwen.com/subject/dmwgaltx.html