解析与生成XML文件或字符串 dom4j工具包

前端之家收集整理的这篇文章主要介绍了解析与生成XML文件或字符串 dom4j工具包前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

XML是作为一种通用的数据格式语言,可以在不同的平台,不同语言之间作为存储数据,进行信息交换。

因为在项目中使用,讲解下java是如何对XML文件或者字符串进行解析,利用dom4j工具包:


首先下载dom4j工具包,并配置到Web项目中;

对下边XML字符串进行解析

解析代码

  1. public class TestUserInfo {
  2.  
  3. public static void main(String[] args) throws Exception {
  4. String person = "<Result><Value>0</Value><Person Name='yuchen' CardNumber='123456' Address='china'/></Result>";
  5. SAXReader reader = new SAXReader();
  6. Document document = reader.read(new InputSource(new StringReader(person)));
  7. //获取XML文档的根元素
  8. Element elementResult = document.getRootElement();
  9. //获取根元素下的所有一级子元素
  10. List<Element> firstSubElements = elementResult.elements();
  11. //获取Value子元素
  12. Element elementValue = firstSubElements.get(0);
  13. String value = elementValue.getText();
  14. //获取Person子元素及其属性
  15. Element elementPerson = firstSubElements.get(1);
  16. String name =elementPerson.attributeValue("Name");
  17. String cardNumber = elementPerson.attributeValue("CardNumber");
  18. String address=elementPerson.attributeValue("Address");
  19. System.out.println("Value: "+value);
  20. System.out.println("Person: Name="+name+" CardNumber="+cardNumber+" Address="+address);
  21. }
  22.  
  23. }

输出结果:

Value: 0
Person: Name=yuchen CardNumber=123456 Address=china

如果是解析XML文件,同样是需要得到Document对象,file为文件地址字符串

  1. //根据文件名创建Document对象
  2. SAXReader reader = new SAXReader();
  3. Document document = reader.read(new File(file));

那么如果生成一个person的字符串,是如何生成呢?代码如下

  1. public static void main(String[] args) throws Exception {
  2. //创建Document对象
  3. Document document = DocumentHelper.createDocument();
  4. //创建根节点
  5. Element elementResult = DocumentHelper.createElement("Result");
  6. document.setRootElement(elementResult);
  7. //给根节点添加子节点Value
  8. Element elementValue = elementResult.addElement("Value");
  9. elementValue.setText("0");
  10. //给根节点添加子节点Value
  11. Element elementPerson = elementResult.addElement("Person");
  12. elementPerson.addAttribute("Name","yuchen").addAttribute("CardNumber","123456").addAttribute("Address","china");
  13. //输出格式化器
  14. OutputFormat format = new OutputFormat(" ",true);
  15. //设置编码
  16. format.setEncoding("utf-8");
  17. format.setSuppressDeclaration(true);
  18. //xml输出
  19. StringWriter out = new StringWriter();
  20. XMLWriter xmlWriter = new XMLWriter(out,format);
  21. //打印doc
  22. try {
  23. xmlWriter.write(document);
  24. xmlWriter.flush();
  25. } catch (IOException e) {
  26. e.printStackTrace();
  27. }
  28. //关闭输出器的流,即是printWriter
  29. String person = out.toString();
  30. System.out.println(person);
  31.  
  32. }


其中,
  1. format.setSuppressDeclaration(true);
如果设为false,则会出现XML声明 <?xml version="1.0" encoding="utf-8"?>
输出结果如下:

<Result> <Value>0</Value> <Person Name="yuchen" CardNumber="123456" Address="china"/> </Result>

猜你在找的XML相关文章