`

JDOM 读取 解析 修改 删除 XML文件

    博客分类:
  • XML
 
阅读更多
  1. package com.itheima.xml;  
  2.   
  3. import java.io.File;  
  4. import java.io.FileWriter;  
  5. import java.util.Iterator;  
  6. import java.util.List;  
  7.   
  8. import org.jdom.Attribute;  
  9. import org.jdom.Document;  
  10. import org.jdom.Element;  
  11. import org.jdom.input.SAXBuilder;  
  12. import org.jdom.output.Format;  
  13. import org.jdom.output.XMLOutputter;  
  14.   
  15. public class TextJDOMparseXML {//操作使用JDOM解析XML文件的类  
  16.   
  17.     /** 
  18.      * @param args 
  19.      */  
  20.     public static void main(String[] args) {  
  21.         // TODO Auto-generated method stub  
  22.         String fileName="F:/test1.xml";  
  23.         TextJDOMparseXML jdomXml=new TextJDOMparseXML();  
  24.         System.out.println("===============1.运用jdom创建XML文件");  
  25.         if(jdomXml.createXMLFile(fileName, "GB2312")==1)  
  26.             System.out.println("运用JDOM创建XML文件成功!");  
  27.         else  
  28.             System.out.println("运用JDOM创建XML文件失败!");  
  29.         System.out.println("===============2.运用JDOM读取XML文件");  
  30.         jdomXml.read(jdomXml.getDocument(fileName));  
  31.         System.out.println("===============3.修改XML内容,输出修改后的文档");  
  32.         jdomXml.update(fileName, "rongshu""liushu");  
  33.         System.out.println("===============4.删除编号为002的节点,输出修改后的文件");  
  34.         jdomXml.delete(fileName, "002");  
  35.           
  36.     }  
  37.       
  38.     //生成一个新的Document    
  39.     public Document createDocument(){  
  40.         Document document=new Document();  
  41.         return document;  
  42.     }  
  43.     //创建一个节点  
  44.     public Element createElement(String paramName,String paramValue){  
  45.         Element element=new Element(paramName);  
  46.         element.setText(formatTextForXML(paramValue));  
  47.         return element;  
  48.     }  
  49.     //创建 XML文件  
  50.     public int createXMLFile(String fileName,String encoding){  
  51.         int returnValue=0;  
  52.         Document document=createDocument();  
  53.         Element treesElement=createElement("trees"null);  
  54.         Element treeElement=new Element("tree");  
  55.         treeElement.setAttribute("id","001");  
  56.         treeElement.setAttribute("name","rongshu");  
  57.           
  58.         Element typeElement=new Element("type");  
  59.         typeElement.setText("style");  
  60.         typeElement.setAttribute("id","xiaoshu");  
  61.         treeElement.addContent(typeElement);  //添加 子节点  
  62.           
  63.           
  64.         Element descElement=new Element("description");  
  65.         descElement.setText(formatTextForXML("It is a big tree"));  
  66.         treeElement.addContent(descElement);  
  67.           
  68.         treesElement.addContent(treeElement);  
  69.           
  70.         Element tree1Element=new Element("tree");  
  71.         tree1Element.setAttribute("id","002");  
  72.         tree1Element.setAttribute("name","yangshu");  
  73.         Element type1Element=new Element("type");  
  74.         type1Element.setText("style");  
  75.         type1Element.setAttribute("id","dashu");  
  76.         tree1Element.addContent(type1Element);  
  77.         Element desc1Element=new Element("description");  
  78.         desc1Element.setText(formatTextForXML("The tree grows taller from day to day"));  
  79.         tree1Element.addContent(desc1Element);  
  80.         treesElement.addContent(tree1Element);  
  81.           
  82.           
  83.         Element tree2Element=new Element("tree");  
  84.         tree2Element.setAttribute("id","003");  
  85.         tree2Element.setAttribute("name","songshu");  
  86.         Element desc2Element=new Element("description");  
  87.         desc2Element.setText(formatTextForXML("The tree is very beautiful"));  
  88.         tree2Element.addContent(desc2Element);  
  89.         treesElement.addContent(tree2Element);  
  90.           
  91.         Element flowerElement=new Element("flower");  
  92.         flowerElement.setText("rose");  
  93.         treesElement.addContent(flowerElement);  
  94.           
  95.         document.addContent(treesElement);  
  96.         try {  
  97.             saveFile(fileName,document,encoding);  
  98.             returnValue=1;  
  99.         } catch (Exception e) {  
  100.             // TODO: handle exception  
  101.             System.out.println("创建XML文件失败:"+e.getMessage());  
  102.         }  
  103.         return returnValue;  
  104.           
  105.     }  
  106.     //读取xml  
  107.     public void read(Document document){  
  108.         try {  
  109.             Format format=Format.getPrettyFormat();   
  110.             format.setEncoding("GB2312");  
  111.               
  112.             XMLOutputter xmlOutputter=new XMLOutputter(format);  
  113.             xmlOutputter.output(document, System.out);  
  114.         } catch (Exception e) {  
  115.             System.out.println("读取XML文件失败:"+e.getMessage());  
  116.         }  
  117.     }  
  118.     //修改 xml文档节点  
  119.     public int update(String fileName,String oldName,String newName){  
  120.         int returnValue=0;  
  121.         Document document=getDocument(fileName);  
  122.         List list=document.getRootElement().getChildren();  
  123.         for (int i = 0; i < list.size(); i++) {  
  124.             Element element=(Element)list.get(i);  
  125.             Attribute attribute=element.getAttribute("name");  
  126.             if(attribute!=null){  
  127.                 if(attribute.getValue().equals(oldName)){  
  128.                     attribute.setValue(newName);  
  129.                 }  
  130.             }  
  131.         }  
  132.           
  133.         list=document.getRootElement().getChildren("flower");  
  134.         Iterator iter=list.iterator();  
  135.         if(iter.hasNext()){  
  136.             Element el=(Element)iter.next();  
  137.             el.setText("lily");  
  138.             Element date=new Element("date");  
  139.             date.setText("2009-04-10");  
  140.             date.setAttribute("type","calendar");  
  141.             el.addContent(date);  
  142.         }  
  143.           
  144.         try {  
  145.             showFile(fileName,document);  
  146.             returnValue=1;  
  147.         } catch (Exception e) {  
  148.             // TODO: handle exception  
  149.             System.out.println("修改XML文件出错:"+e.getMessage());  
  150.         }  
  151.           
  152.         return returnValue;  
  153.           
  154.           
  155.     }  
  156.     //删除XML 节点  
  157.     public boolean delete(String fileName,String id){  
  158.         boolean returnVlalue=false;  
  159.         Document doc=getDocument(fileName);  
  160.         Element root=doc.getRootElement();  
  161.         List list=root.getChildren("tree");  
  162.         for (int i = 0; i < list.size(); i++) {  
  163.             Element element=(Element)list.get(i);  
  164.             if (element.getAttribute("id").getValue().equals(id)) {  
  165.                 root.removeContent(element);  
  166.             }  
  167.         }  
  168.         try {  
  169.             showFile(fileName, doc);  
  170.             returnVlalue=true;  
  171.         } catch (Exception e) {  
  172.             // TODO: handle exception  
  173.             e.printStackTrace();  
  174.         }  
  175.         return returnVlalue;  
  176.                   
  177.     }  
  178.       
  179.     private void showFile(String fileName, Document document) {  
  180.         // TODO Auto-generated method stub  
  181.         Format format=Format.getPrettyFormat();  
  182.         format.setEncoding("GB2312");  
  183.         format.setIndent(" ");  
  184.         try {  
  185.             XMLOutputter xmlOutputter=new XMLOutputter(format);  
  186.             FileWriter fileWriter=new FileWriter(fileName);  
  187.             xmlOutputter.output(document, fileWriter);  
  188.             xmlOutputter.output(document, System.out);  
  189.         } catch (Exception e) {  
  190.             System.out.println("XML文件输出到控制台出错:"+e.getMessage());  
  191.         }  
  192.     }  
  193.   
  194.     private Document getDocument(String fileName) {  
  195.         // TODO Auto-generated method stub  
  196.         Document document=null;  
  197.         try {  
  198.             SAXBuilder saxBuilder=new SAXBuilder();  
  199.             document=saxBuilder.build(new File(fileName));  
  200.         } catch (Exception e) {  
  201.             // TODO: handle exception  
  202.             System.out.println("载入失败:"+e.getMessage());  
  203.             return null;  
  204.         }  
  205.         return document;  
  206.     }  
  207.   
  208.     private boolean saveFile(String fileName, Document document, String encoding) {  
  209.         // TODO Auto-generated method stub  
  210.         Format format=Format.getPrettyFormat();  
  211.         if(encoding!=null){  
  212.             format.setEncoding(encoding);  
  213.         }  
  214.         format.setIndent(" "); //设置xml文件的缩进  
  215.         try {  
  216.             XMLOutputter xmlOutputter=new XMLOutputter(format);  
  217.             FileWriter fileWriter=new FileWriter(fileName);  
  218.             xmlOutputter.output(document, fileWriter);  
  219.         } catch (Exception e) {  
  220.             System.out.println("保存文件出错:"+e.getMessage());  
  221.             return false;  
  222.         }  
  223.         return true;  
  224.     }  
  225.   
  226.     private String formatTextForXML(String sourceString) {  
  227.         // TODO Auto-generated method stub  
  228.         if (sourceString==null) {  
  229.             return null;  
  230.         }  
  231.         int stLen=0;  
  232.         StringBuffer reString= new StringBuffer();  
  233.         String deString="";  
  234.         stLen=sourceString.length();  
  235.         for (int i = 0; i < stLen; i++) {  
  236.             char ch=sourceString.charAt(i);  
  237.             switch (ch) {  
  238.             case '<':  
  239.                 deString="<";  
  240.                 break;  
  241.             case '>':  
  242.                 deString=">";  
  243.                 break;  
  244.             case '\"':  
  245.                 deString="\"";  
  246.                 break;  
  247.             case '&':  
  248.                 deString="&";  
  249.                 break;  
  250.             case 13:  
  251.                 deString="\n";  
  252.                 break;  
  253.             default:  
  254.                 deString=""+ch;  
  255.                 break;  
  256.             }  
  257.             reString.append(deString);  
  258.         }  
  259.         return reString.toString();  
  260.     }     
  261.       
  262.       
  263. }  
分享到:
评论

相关推荐

    jdom 读取XML 文件

    接下来,我们将详细介绍使用JDOM读取XML文件的步骤: 1. 加载XML文件:使用`SAXBuilder`类来读取XML文件并构建DOM树。如下所示: ```java import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public...

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    java利用jdom读取xml文件

    要使用JDOM读取XML文件,我们需要以下几个步骤: 1. 引入JDOM库:在项目中添加JDOM的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;jdom2 &lt;version&gt;...

    jdom 读取修改xml文件

    通过这个简单的示例,我们了解了如何使用 JDOM 库来读取、解析、修改和保存 XML 文件。JDOM 提供了一个强大而直观的 API,使得开发者能够更加高效地处理 XML 数据。对于需要频繁与 XML 数据交互的应用程序来说,JDOM...

    JDOM读取XML,并且创建XML

    在JDOM中,读取XML文件通常涉及以下步骤: 1. 创建一个`SAXBuilder`实例,这是解析XML文档的入口点。 2. 使用`SAXBuilder`的`build`方法读取XML文件,返回一个`Document`对象。 3. 通过`Document`对象访问XML文档的...

    jdom 读取,建立,修改 xml

    在JDOM中,读取XML文档首先需要解析XML文件到一个`SAXBuilder`对象,然后通过这个对象构建一个`Document`对象。以下是一个基本的读取XML文件的示例: ```java import org.jdom2.*; import org.jdom2.input....

    用jdom解析xml文件

    在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...

    JDOM解析本地XML

    3. **解析XML文件**:使用`SAXBuilder`或者`JDOMBuilder`可以解析XML文件到一个`Document`对象。例如: ```java SAXBuilder builder = new SAXBuilder(); File xmlFile = new File("path_to_your_xml_file.xml");...

    jdom学习读取xml文件.files

    本教程将深入探讨如何使用JDOM读取XML文件,并阐述其在Spring框架中的应用。 首先,我们了解JDOM的基本概念。JDOM提供了一种树型结构来表示XML文档,其中XML元素、属性、文本和注释等都对应于特定的Java对象。通过...

    JDOM解析xml文档实例(自己编写,仅供参考)

    在这个例子中,我们将学习如何读取XML文件,创建一个`SAXBuilder`对象来构建XML文档的DOM(文档对象模型)表示,然后通过`Document`对象来访问和修改XML结构。 2. `sohuchannel.xml`:这是我们要解析的XML文件,可能...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    jdom读取xml全属性文件

    然后,我们可以编写Java代码来解析XML文件: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import java.io.File; public class JdomReader { public ...

    JDOM操作xml文件的xmlBean

    通过上述分析可以看出,JDOM不仅提供了简洁的API来处理XML文档,还能够很好地应对常见的读取、修改、添加和删除等操作需求。然而,在实际项目中,根据具体的需求和技术栈选择合适的XML处理工具也是非常重要的。

    用jdom解析xml

    这个JSP页面首先解析XML文件,显示其顶级元素,然后以格式化的形式输出整个XML文档。 **7. 性能考虑** 虽然JDOM提供了易用性,但它的性能可能不如其他XML解析器如DOM4J或StaX。在处理大型XML文件时,应考虑这些...

    java利用jdom解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输结构化数据。它的结构清晰...

    利用JDOM解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本概念。JDOM提供了一组Java对象来表示XML文档,包括Element(元素)、Attribute(属性)、Text(文本...

    用java读取修改xml文件的代码实现

    本文将详细介绍如何使用Java来读取和修改XML文件,主要涉及以下几个核心知识点: 1. **DOM解析器**: Document Object Model(DOM)是一种将XML文档转换为内存中的树形结构的方法,使得可以遍历和修改XML文件。...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    java读取XML(JDOM)

    然后,我们可以创建一个`SAXBuilder`实例,用于解析XML文件: ```java SAXBuilder saxBuilder = new SAXBuilder(); ``` 接着,使用`SAXBuilder`的`build()`方法读取XML文件并构建一个`Document`对象,这是JDOM中的...

Global site tag (gtag.js) - Google Analytics