使用dom4j解析xml

使用dom4j解析xml

xml格式如下

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Copyright w3school.com.cn -->
<!-- W3School.com.cn bookstore example -->
-<bookstore>
-<book category="children">
	<key>
		<int>100</int>
	</key>
	<value>
		<string>aaaa</string>
		<string>bbb</string>
		<string>ccc</string>
	</value>
</book>
-<book category="cooking">
	<key>
		<int>100</int>
	</key>
	<value>
		<string>aaaa</string>
	</value>
</book>
-<book category="web" cover="paperback">
	<key>
		<int>100</int>
	</key>
	<value>
		<int>123</int>
		<int>456</int>
		<int>789</int>
	</value>
</book>

代码

------创建实体类

@Data
public class dto {
        private int key;
        private List<Object> value;
}

-----逻辑

	// 创建SAXReader
    SAXReader reader = new SAXReader();
   //从xml文件获取数据
   Document document = reader.read(new File("/analysisxml/src/analysis/InstrumentRecord.xml"));
   // 获取根节点 emps
   Element root = document.getRootElement();
   // 查找指定节点名称book 的所有子节点elements
   // 得到所有book 元素
  List<Element> list = root.elements("book ");
  // 实体类
	List<dto>dtos=new ArrayList<>();
	for (Element element : list) {
                dto dto =new dto();
                // 循环输出全部emp的相关信息
                System.out.println("element.getName()==>"+element.getName());
                // 得到emp元素下的子元素
                List<Element> Key = element.elements("Key");

                for (Element value : Key) {
                
                    Element string = value.element("int");
                    dto.setKey( string.getText());
                    System.out.println("key:" + string.getText());

                }
                List<Element> Value = element.elements("Value");
                for (Element value : Value) {
                    List<Object> values =new ArrayList<>();
                    List<Element> elements = value.elements("ArrayOfString");
                    for (Element element1 : elements){
                            List<Element> elements1 = element1.elements("string");
                            for (int i = 0; i < elements1.size(); i++) {
                                String name = elements1.get(i).getText();
                                values.add(name);
                                System.out.println("qqqqqqq:" + name);
                            }
                        }


                    List<Element> string = value.elements("string");
                    for (int i = 0; i < string.size(); i++) {
                        String name = string.get(i).getText();
                        values.add(name);
                        System.out.println("Value:" + name);
                    }

                    List<Element> elements1 = value.elements("int");
                    for (int i = 0; i < elements1.size(); i++) {
                        String name = elements1.get(i).getText();
                        values.add(name);
                        System.out.println("elements1:" + name);
                    }
                    //抛出异常
                    

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

每天都有喝稀饭

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值