java dom 解析xml 字符串_JAVA中使用DOM解析XML文件

使用到的工具和软件有:IntelliJ IDEA 各种版本, dom4j-1.6.1, 一个xml文件;

1.查看xml文件的格式,便于后面的模拟输出

]>

测试1

作者1

25.0

测试2

作者2

50

测试3

作者3

2.5

2.导入dom4j框架包

54295f53e7a1f9aaddf7ed69ba4a673e.png

3.新建Test测试类

13424c44e649b7ad010ab01cf8174745.png

4.导入各种包,idea中可在使用时快捷加载 ,所有异常只做抛出不做处理

1 import org.dom4j.Attribute;

2 import org.dom4j.Document;

3 import org.dom4j.DocumentException;

4 import org.dom4j.Element;

5 import org.dom4j.io.SAXReader;

6 import java.io.File;

7 import java.lang.reflect.InvocationTargetException;

8 import java.util.Iterator;

5.创建StringBuilder对象,用于模拟输出,实例化SAXReader类

//不做异常处理 只抛出

public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, DocumentException {

//创建StringBuilder对象,收集数据信息

StringBuilder sb = new StringBuilder();

//加载SAXReader类

Class> cf = Class.forName("org.dom4j.io.SAXReader");

//实例化SAXReader类

SAXReader sr = (SAXReader)cf.getDeclaredConstructor().newInstance();

6.读取books.xml节点信息

//SAXReader的read() 读取 books.xml

Document bdoc = sr.read(new File("src/com/test/dom/domain/books.xml"));

//getRootElement() 拿到根节点信息

Element rootElement = bdoc.getRootElement();

//elementIterator 拿到根节点的子节点信息

Iterator biter = rootElement.elementIterator();

7.拼接数据信息  模拟输出文档原本信息

//hasNext判断是否存在下一个元素

while (biter.hasNext())

{

//next()指针下移,返回该指针所指向的元素

Element next = biter.next();

Attribute id = next.attribute("id");

//拼接

sb.append("

//拿到book

sb.append(next.getName());

sb.append(" ");

//拿到key值 'id'

sb.append(id.getName());

sb.append("=");

//拿到value值 '1'

sb.append(id.getValue());

sb.append(">");

//拿到book下的子节点信息

Iterator iter = next.elementIterator();

sb.append("\n");

while(iter.hasNext())

{

//拼接

//

//

//

Element next1 = iter.next();

sb.append("\t");

sb.append("

sb.append(next1.getName());

sb.append(">");

sb.append(next1.getStringValue());

sb.append("

sb.append("/");

sb.append(next1.getName());

sb.append(">");

sb.append("\n");

}

//拼接

sb.append("

sb.append("/");

sb.append(next.getName());

sb.append(">");

sb.append("\n");

}

8. 输出StringBuilder信息

//输出信息

System.out.println(sb);

293e3834ad0bb5f41f2c6d40bfa5d1b9.png

线程安全:StringBuffer线程安全,StringBuilder线程不安全。缓冲区:StringBuffer直接使用toStringCache构造字符串。StringBuilder复制字符数组再构造。性能:StringBuilder的性能要远大于StringBuffer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值