XML之DOM4、JDom等解析方式

前端之家收集整理的这篇文章主要介绍了XML之DOM4、JDom等解析方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
1、生成XML
Java代码
  1. @H_404_11@public@H_404_11@void@H_404_11@createApplicationConfigXML(){
  2. @H_404_11@//建立document对象 @H_404_11@
  3. @H_404_11@try@H_404_11@{
  4. @H_404_11@Documentdocument=DocumentHelper.createDocument();
  5. @H_404_11@Elementroot=document.addElement("root"@H_404_11@);//添加文档根 @H_404_11@
  6. @H_404_11@root.addComment("这个一个注释"@H_404_11@);//加入一行注释 @H_404_11@
  7. @H_404_11@Elementrequest=root.addElement("request"@H_404_11@);//添加root的子节点 @H_404_11@
  8. @H_404_11@request.addAttribute("type"@H_404_11@,"cat"@H_404_11@);
  9. @H_404_11@request.addAttribute("flow"@H_404_11@,"tong"@H_404_11@);
  10. @H_404_11@request.addAttribute("time"@H_404_11@,"2009"@H_404_11@);
  11. @H_404_11@Elementpro=request.addElement("pro"@H_404_11@);
  12. @H_404_11@pro.addAttribute("type"@H_404_11@,"att"@H_404_11@);
  13. @H_404_11@pro.addAttribute("name"@H_404_11@,"附件"@H_404_11@);
  14. @H_404_11@pro.addText("测试哈子"@H_404_11@);
  15. @H_404_11@
  16. @H_404_11@Elementcd=request.addElement("pro"@H_404_11@);
  17. @H_404_11@cd.addAttribute("type"@H_404_11@,"cd"@H_404_11@);
  18. @H_404_11@cd.addAttribute("name"@H_404_11@,"特殊字符过滤"@H_404_11@);
  19. @H_404_11@cd.addCDATA("特殊字符"@H_404_11@);
  20. @H_404_11@
  21. @H_404_11@//输出全部原始数据,在编译器中显示 @H_404_11@
  22. @H_404_11@OutputFormatformat=OutputFormat.createPrettyPrint();
  23. @H_404_11@format.setEncoding("GBK"@H_404_11@);//根据需要设置编码 @H_404_11@
  24. @H_404_11@XMLWriterwriter=new@H_404_11@XMLWriter(System.out,format);
  25. @H_404_11@document.normalize();
  26. @H_404_11@writer.write(document);
  27. @H_404_11@writer.close();
  28. @H_404_11@//输出全部原始数据,并用它生成新的我们需要的XML文件 @H_404_11@
  29. @H_404_11@XMLWriterwriter2=new@H_404_11@XMLWriter(new@H_404_11@FileWriter(new@H_404_11@File(
  30. @H_404_11@"test.xml"@H_404_11@)),format);
  31. @H_404_11@writer2.write(document);//输出文件 @H_404_11@
  32. @H_404_11@writer2.close();
  33. @H_404_11@}catch@H_404_11@(UnsupportedEncodingExceptione){
  34. @H_404_11@//TODOAuto-generatedcatchblock @H_404_11@
  35. @H_404_11@e.printStackTrace();
  36. @H_404_11@}catch@H_404_11@(IOExceptione){
  37. @H_404_11@//TODOAuto-generatedcatchblock @H_404_11@
  38. @H_404_11@e.printStackTrace();
  39. @H_404_11@}
  40. @H_404_11@}

-----------------------------------------------------------------
下面是解析和修改XML
XML文件内容如下:
Xml代码
  1. @H_404_11@<?xml@H_404_11@version@H_404_11@="1.0"@H_404_11@encoding@H_404_11@="utf-8"?>@H_404_11@
  2. @H_404_11@<root>@H_404_11@
  3. @H_404_11@<request@H_404_11@type@H_404_11@="Pending"@H_404_11@flowType@H_404_11@="GENERAL"@H_404_11@flowName@H_404_11@="报销流程"@H_404_11@
  4. @H_404_11@docId@H_404_11@="185647"@H_404_11@flowId@H_404_11@="16409"@H_404_11@nodeName@H_404_11@="报销人确认"@H_404_11@wikId@H_404_11@="58288"@H_404_11@
  5. @H_404_11@sendId@H_404_11@="1210040"@H_404_11@userId@H_404_11@="1210040"@H_404_11@createDate@H_404_11@="2009-12-03"@H_404_11@
  6. @H_404_11@title@H_404_11@="费用报销"@H_404_11@flowCreaterId@H_404_11@="1210040"@H_404_11@nodeType@H_404_11@="1"@H_404_11@
  7. @H_404_11@bosTime@H_404_11@="2009-12-0309:36:15">@H_404_11@
  8. @H_404_11@<pro@H_404_11@type@H_404_11@="att"></pro>@H_404_11@
  9. @H_404_11@<pro@H_404_11@type@H_404_11@="textarea"@H_404_11@name@H_404_11@="OP_bxryj"@H_404_11@title@H_404_11@="处理意见"@H_404_11@need@H_404_11@="true"></pro>@H_404_11@
  10. @H_404_11@</request>@H_404_11@
  11. @H_404_11@</root>@H_404_11@

修改
Java代码
  1. @H_404_11@public@H_404_11@StringgetApplcationConfigFromXMLTest(){
  2. @H_404_11@Stringvalue=""@H_404_11@;
  3. @H_404_11@try@H_404_11@{
  4. @H_404_11@SAXReadersax=new@H_404_11@SAXReader();
  5. @H_404_11@DocumentxmlDoc=sax.read(new@H_404_11@File(this@H_404_11@.UBSSDIC_PATH));
  6. @H_404_11@Elementroot=xmlDoc.getRootElement();//根节点 @H_404_11@
  7. @H_404_11@Iteratorit=root.elementIterator();
  8. @H_404_11@while@H_404_11@(it.hasNext()){
  9. @H_404_11@Elementele=(Element)it.next();
  10. @H_404_11@Attributeattribute=ele.attribute("type"@H_404_11@);
  11. @H_404_11@if@H_404_11@(attribute.getStringValue().equals("Pending"@H_404_11@)){
  12. @H_404_11@attribute.setValue("sendread2"@H_404_11@);//修改属性节点的值 @H_404_11@
  13. @H_404_11@}
  14. @H_404_11@
  15. @H_404_11@AttributeflowType=ele.attribute("flowType"@H_404_11@);
  16. @H_404_11@flowType.detach();//删除某个属性 @H_404_11@
  17. @H_404_11@
  18. @H_404_11@ele.addAttribute("type"@H_404_11@,"Pending"@H_404_11@);//添加一个属性节点 @H_404_11@
  19. @H_404_11@}
  20. @H_404_11@Elementnew_cdata=root.addElement("new_cdata"@H_404_11@);//添加一个元素 @H_404_11@
  21. @H_404_11@new_cdata.addCDATA("tst&ree"@H_404_11@);
  22. @H_404_11@
  23. @H_404_11@Elementnew_ele=root.addElement("new_ele"@H_404_11@);//添加一个元素 @H_404_11@
  24. @H_404_11@new_ele.addText("33434343"@H_404_11@);
  25. @H_404_11@
  26. @H_404_11@Elementobj=(Element)root.selectObject("//pro[@type='att']"@H_404_11@);//根据XPath查找元素
  27. @H_404_11@obj.setText("测试dddddd"@H_404_11@);//修改元素的值即text节点 @H_404_11@
  28. @H_404_11@//输出全部原始数据,在编译器中显示 @H_404_11@
  29. @H_404_11@OutputFormatformat=OutputFormat.createPrettyPrint();
  30. @H_404_11@format.setEncoding("GBK"@H_404_11@);
  31. @H_404_11@XMLWriterwriter=new@H_404_11@XMLWriter(System.out,format);
  32. @H_404_11@writer.write(xmlDoc);
  33. @H_404_11@writer.close();
  34. @H_404_11@//输出全部原始数据,并用它生成新的我们需要的XML文件 @H_404_11@
  35. @H_404_11@XMLWriterwriter2=new@H_404_11@XMLWriter(new@H_404_11@FileWriter(new@H_404_11@File(
  36. @H_404_11@"test.xml"@H_404_11@)),format);
  37. @H_404_11@writer2.write(xmlDoc);//输出文件 @H_404_11@
  38. @H_404_11@writer2.close();
  39. @H_404_11@}catch@H_404_11@(DocumentExceptione){
  40. @H_404_11@System.out.println(e.getMessage());
  41. @H_404_11@e.printStackTrace();
  42. @H_404_11@}catch@H_404_11@(IOExceptione){
  43. @H_404_11@e.printStackTrace();
  44. @H_404_11@}
  45. @H_404_11@return@H_404_11@value;
  46. @H_404_11@}

解析
Java代码
  1. @H_404_11@public@H_404_11@void@H_404_11@parseApplicationConfigXML(){
  2. @H_404_11@try@H_404_11@{
  3. @H_404_11@SAXReadersax=new@H_404_11@SAXReader();
  4. @H_404_11@DocumentxmlDoc=sax.read(new@H_404_11@File("E:\\20090316HPS\\Dom4jTest\\t.xml"@H_404_11@));
  5. @H_404_11@Elementroot=xmlDoc.getRootElement();//根节点 @H_404_11@
  6. @H_404_11@Iteratorit=root.elementIterator("request"@H_404_11@);
  7. @H_404_11@while@H_404_11@(it.hasNext()){
  8. @H_404_11@Elementrequest=(Element)it.next();
  9. @H_404_11@System.out.println(request.getName());
  10. @H_404_11@System.out.println(request.attributeValue("type"@H_404_11@));
  11. @H_404_11@System.out.println(request.attributeValue("flow"@H_404_11@));
  12. @H_404_11@System.out.println(request.attributeValue("time"@H_404_11@));
  13. @H_404_11@
  14. @H_404_11@}
  15. @H_404_11@System.out.println("-------------------------------------------"@H_404_11@);
  16. @H_404_11@Listlist=root.selectNodes("//pro"@H_404_11@);
  17. @H_404_11@for@H_404_11@(int@H_404_11@i=0@H_404_11@;i<list.size();i++){
  18. @H_404_11@Elementpro=(Element)list.get(i);
  19. @H_404_11@System.out.println(pro.getName());
  20. @H_404_11@System.out.println(pro.attributeValue("type"@H_404_11@));
  21. @H_404_11@System.out.println(pro.attributeValue("name"@H_404_11@));
  22. @H_404_11@System.out.println(pro.getText());
  23. @H_404_11@System.out.println("+++++++++++++++++++++++++++++++++"@H_404_11@);
  24. @H_404_11@}
  25. @H_404_11@}catch@H_404_11@(DocumentExceptione){
  26. @H_404_11@//TODOAuto-generatedcatchblock @H_404_11@
  27. @H_404_11@e.printStackTrace();
  28. @H_404_11@}

猜你在找的XML相关文章