XML之DOM4、JDom等解析方式

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

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

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

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

猜你在找的XML相关文章