`
JAVA天地
  • 浏览: 674140 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

利用JDOM及XPath对XML文件进行创建、查找、增加、删除、保存等操作

阅读更多
今天准备把原来写的多线程断点下载程序写成通用JAR文件的形式,但是要考虑用户已经下载没有下载完成的文件保存的保存,想了几种方式,一种是文本文件,考虑读写起来比较麻烦,要一行一行的全部读进来再分析,放弃;第二种是采用数据库,但是考虑到并不是所有的用户都喜欢这种方式,并且数据库还占空间较大,放弃;第三种方式就是采用XML方式,想到这种方式的移植性强,很多平台都支持,并且读写起来也是比较方便,所以就决定采用这种方式,以下是今天加前面的一点心得,包括了对 XML文件进行创建、查找、增加、删除、保存等操作,先放在这里,等以后有用的时候,再来取,注,要运行下面程序,请先下载JDOM,并配好环境变量

import java.io.File;

import java.io.FileOutputStream;

import java.util.List;

import org.jdom.Attribute;

import org.jdom.Document;

import org.jdom.Element;

import org.jdom.input.SAXBuilder;

import org.jdom.output.XMLOutputter;

import org.jdom.xpath.XPath;

/**

* 在该类中将动态的创建XML文件用以保存下载的文件名及路径

* 以便这些下载文件的断点续传功能可以使用

* 创建的XML文件格式如下:

* <?xml version="1.0" encoding="UTF-8" ?>

<downFile>

<File internetPath="http://www.123.com/xx.rar">

<localPath>c:\\tmp</localPath>

</File>

<File internetPath="http://www.123.com/xx2.rar">

<localPath>c:\\tmp0</localPath>

</File>

</downFile>

*/

public class FileDownInformationWithXML {

SAXBuilder builder;

Document document;

Element root;

String XMLFileName = "downFile.xml";

String fileAndPath; //XML文档的完整路径

/**

*

* @param Path 存放下载临时文件的路径

*/

public FileDownInformationWithXML(String Path) {

builder = new SAXBuilder();

this.fileAndPath = Path + XMLFileName;

if (checkXMLFileExist() == false) {

if (createXMLFile() == false) {

System.out.println("XML文件创建错误,请确认您是否有权限");

return;

}

}

try {

document = builder.build(fileAndPath);

} catch (Exception e) {

e.printStackTrace();

}

root = document.getRootElement();

//System.out.println("root:"+root.getName());

}

/**

* 返回根据网络地址得到的本地地址,这是在断点续传中使用

* 如果返null值,那么就说明该没有不存在下载列表中,就应该重新下载

*/

public String downFileExist(String internetAddress) {

String localPath = null;

XPath xPath; //查找id=1的是不是存在

try {

//下面是查找文件名及下载地址都相同的项

//xPath = XPath.newInstance("/downFile/File[@name='"+file+"']/internetPath[text()='"+internetAddress+"']");

xPath =

XPath.newInstance("//File[@internetPath='" + internetAddress +

"']");

List list = xPath.selectNodes(document);

if (list.size() == 1) {

Element e = (Element)list.get(0);

localPath = e.getChildText("localPath");

}

} catch (Exception e) {

e.printStackTrace();

}

return localPath;

}

/**

* 根据网络地址及本地地址,增加一个节点

*/

public void addOneDownRecord(String internetAddress, String localAddress) {

Element e = new Element("File");

root.addContent(e);

Attribute attribute = new Attribute("internetPath", internetAddress);

e.setAttribute(attribute);

Element e1 = new Element("localPath");

e1.setText(localAddress);

e.addContent(e1);

}

/**

* 根据网络地址删除一个节点

*/

public boolean removeOneDownRecord(String internetAddress) {

XPath xpath;

try {

xpath =

XPath.newInstance("//File[@internetPath='" + internetAddress +

"']");

List list = xpath.selectNodes(root);

if (list.size() == 1) {

Element e = (Element)list.get(0);

root.removeContent(e);

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

/**

* 将更改的结果保存到磁盘

* @return

*/

public boolean saveChange() {

XMLOutputter out;

try {

out = new XMLOutputter();

out.output(root, new FileOutputStream(fileAndPath));

return true;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

public boolean saveChange(Document doc) {

XMLOutputter out;

try {

out = new XMLOutputter();

out.output(doc, new FileOutputStream(fileAndPath));

return true;

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

margin: 0cm 0cm

分享到:
评论

相关推荐

    JDOM中XPath.selectNodes()和XPath.selectSingleNode()用法

    在Java开发中,XML处理是常见的任务之一,...在提供的`jdomdemo`压缩包文件中,可能包含了一个或者多个示例程序,演示了如何使用JDOM和XPath进行XML处理。你可以解压并运行这些程序,以便更直观地理解它们的工作原理。

    使用JDOM解析XML文件

    XPath是一种在XML文档中查找信息的语言,JDOM提供了Jaxen库来支持XPath。例如,以下代码演示了如何找到文档中的特定元素: ```java import org.jdom2.xpath.XPathExpression; import org.jdom2.xpath.XPathFactory;...

    用jdom解析xml文件

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

    JDOM操作xml文件的xmlBean

    ### JDOM操作XML文件的关键知识点 #### 一、JDOM简介 JDOM(Java Document Object Model)是一种基于Java的XML解析API,它提供了一种简便的方式来解析和操作XML文档。与传统的DOM相比,JDOM更加注重性能和易用性,...

    xpath读取XML节点

    在Java编程中,JDOM库是一个流行的解析和操作XML的工具,它提供了对XPath的支持,使得我们可以方便地通过XPath表达式来读取XML文档的节点。 首先,理解XPath的基本语法是非常重要的。XPath表达式由路径表达式组成,...

    JDOM读取XML,并且创建XML

    JDOM库不仅提供了读取和创建XML的能力,还支持更复杂的操作,如查找、修改和删除XML元素。例如,你可以使用`XPath`表达式来定位特定的元素,或者通过`Element`类的方法来添加、删除或修改子元素和属性。 总的来说,...

    XML解析,简单易学(Jdom+XPath): 精简Demo(含jar包).rar

    在"Jdom 精简Demo"中,可能包含了使用JDOM2解析XML的示例代码,展示了如何创建Document对象、使用XPath选取节点以及对XML进行操作。而"项目结构+运行结果.jpg"文件则可能显示了项目的目录结构和运行后的结果,帮助...

    JDOM使用详解XML及实例

    **JDOM** 是一个专为Java设计的XML处理库,它提供了一种高效且便捷的方式来解析、创建、修改和序列化XML文档。JDOM通过利用Java语言的强大特性,如方法重载、集合和映射,将SAX和DOM的优点结合在一起,简化了XML处理...

    Jdom.jar在JAVA中可以对XML文件进行操作,读取或者写入XML

    - **灵活性**:JDOM支持XPath,可以方便地查找和操作XML文档中的任何部分。 - **完全Java实现**:无需依赖外部库,如DOM或SAX解析器,提高了平台的兼容性。 4. **注意事项** - JDOM不适用于处理非常大的XML文件...

    jdom 操作XML实现增删改查

    本篇文章将详细介绍如何利用JDOM库在Java中实现XML的增删改查操作。 一、XML的基本结构与JDOM解析 XML文档由元素(Element)、属性(Attribute)、文本内容(Text)等组成。JDOM通过SAX和DOM两种方式解析XML文档。...

    java jdom解析xml

    - **优化策略**:如果确实需要处理大型XML文件,可以使用JDOM的SAXBuilder,它允许以SAX方式读取XML,但仍然使用JDOM API进行操作。 6. **示例代码** ```java import org.jdom2.Document; import org.jdom2....

    xpathDemo.zip

    在"xpathDemo"这个项目中,开发者可能创建了一个XML文件,然后使用JDOM加载该文件,接着利用XPath执行一些查询,例如找出所有价格大于特定值的书籍,或者获取某个元素的所有子元素。这样的示例有助于理解如何在实际...

    jdom解析xml用到的jar包

    6. **保存XML**:最后,如果对XML进行了修改,可以使用`XMLOutputter`将其输出到文件或字符串。 ```java XMLOutputter xmlOutputter = new XMLOutputter(); String formattedXml = xmlOutputter.outputString...

    jdom_xml.rar_jdom_xml

    本文将对JDOM和XML的解析进行详细介绍,并进行两者之间的比较。 **JDOM** JDOM(Java Document Object Model)是Java平台上的一个XML处理库,它提供了一种直接在Java对象层次上操作XML文档的方法。JDOM的主要优势...

    JDOM解析XML

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在数据交换、配置文件、文档存储等领域。在Java中,解析XML有多种方法,其中之一就是使用JDOM库。JDOM,全称Java Document Object Model,是...

    jdom源码+jdom.jar

    - **修改XML**:对`Element`、`Attribute`进行添加、删除或修改操作。 - **输出XML**:使用`XMLOutputter`将JDOM对象转换为XML字符串或写入文件。 - **查询XML**:利用XPath表达式选择XML文档中的特定节点。 在深入...

    xml文件生成工具类(含jdom.jar)

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用在数据交换、配置文件、文档存储等领域。本文将深入探讨XML文件的生成,并...通过熟悉其API和用法,可以有效地进行XML文件的创建、读取和修改。

    jdom 下载 jdom 下载

    - **构建XML**:JDOM允许动态构建XML文档,通过Element、Attribute等类创建XML结构。 - **查询XML**:JDOM支持XPath表达式,可以方便地查找XML文档中的节点。 - **序列化XML**:将XML对象转换回XML字符串,以便输出...

    Jdom-xml解析

    通过SAXBuilder或DOMBuilder解析XML,使用Element、Attribute和Text对象操作XML结构,借助XPath表达式进行高效查询,最后通过XMLOutputter将修改后的文档写回文件。这些知识点对于任何需要处理XML的Java开发者来说都...

    jdom4j解析xml

    此外,jdom4j还支持XPath查询,使得查找和操作XML文档中的特定元素变得非常容易。 ### 总结 通过上述代码实例,我们可以看到jdom4j在处理复杂组织结构树时的强大能力。从创建文档、构建树结构到最终写入文件,每...

Global site tag (gtag.js) - Google Analytics