JAVA 使用DOM4J解析XML文件

论坛 期权论坛 脚本     
匿名技术用户   2021-1-3 19:35   18   0
import java.io.File;
import java.util.ArrayList;
import java.util.List;

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

public class DOM4JTest
{
    private static ArrayList<PhoneInformation> phoneInformations = new ArrayList<PhoneInformation>();
    
    public static void main(String[] args)
    {
        SAXReader reader = new SAXReader();
        try
        {
            // 通过read方法加载xml文件,获取document对象
            Document document = reader.read(new File("src/scp_telephone_test/device.xml"));
            // 通过document对象获取根节点
            Element deviceElement = document.getRootElement();
            // 获取手机节点
            List<Element> phoneNodes = deviceElement.elements();
            // phoneNodes判空
            for (Element phoneNode : phoneNodes)
            {
                List<Element> phoneAttributes = phoneNode.elements();
                for (Element phoneAttribute : phoneAttributes)
                {
                    System.out.println(phoneAttribute.getName() + ":" + phoneAttribute.getStringValue());
                }
            }
        }
        catch(DocumentException e)
        {
            e.printStackTrace();
        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <device>
        <id>device_id_1</id>
        <ip>device_ip_1</ip>
        <number>device_number_1</number>
        <name>联通</name>
    </device>
    <device>
        <id>device_id_2</id>
        <ip>device_id_2</ip>
        <number>device_number_2</number>
        <name>移动</name>
    </device>
    <device>
        <id>device_id_3</id>
        <ip>device_ip_3</ip>
        <number>device_number_3</number>
        <name>电信</name>
    </device>
</root>

到获取属性节点基本上其他地方也都有介绍,这里主要想记录一下,xml文件的格式会影响解析方法是否成功

如上所示,在<device></device>中,都是以<id></id>这种格式存在的属性,那么只能以下例代码来获得值。

List<Element> phoneAttributes = phoneNode.elements();
for (Element phoneAttribute : phoneAttributes)
{
    System.out.println(phoneAttribute.getName() + ":" + phoneAttribute.getStringValue());
}

如果是<device id="123">这种形式,那么可以利用attribute来获取,如 .attributeValue("id"),总之,如果你想用attribute来进行解析xml文件,那么一定要注意xml文件的格式。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP