public class Dom4jDemo {
public Dom4jDemo() {
}
/**
* 建立一个XML文档,文档名由输入参数决定
* @param filename 需建立的文件名
* @return 返回操作结果, 0表失败, 1表成功
*/
public int createXMLFile(String filename){
/** 返回操作结果, 0表失败, 1表成功 */
int returnValue = 0;
/** 建立document对象 */
Document document = DocumentHelper.createDocument();
/** 建立XML文档的根books */
Element booksElement = document.addElement("books");
/** 加入一行注释 */
booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");
/** 加入第一个book节点 */
Element bookElement = booksElement.addElement("book");
/** 加入show参数内容 */
bookElement.addAttribute("show","yes");
/** 加入title节点 */
Element titleElement = bookElement.addElement("title");
/** 为title设置内容 */
titleElement.setText("Dom4j Tutorials");
/** 类似的完成后两个book */
bookElement = booksElement.addElement("book");
bookElement.addAttribute("show","yes");
titleElement = bookElement.addElement("title");
titleElement.setText("Lucene Studing");
bookElement = booksElement.addElement("book");
bookElement.addAttribute("show","no");
titleElement = bookElement.addElement("title");
titleElement.setText("Lucene in Action");
/** 加入owner节点 */
Element ownerElement = booksElement.addElement("owner");
ownerElement.setText("O'Reilly");
try{
/** 将document中的内容写入文件中 */
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding( "UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(filename)),format);
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
/**
* 修改XML文件中内容,并另存为一个新文件
* 重点掌握dom4j中如何添加节点,修改节点,删除节点
* @param filename 修改对象文件
* @param newfilename 修改后另存为该文件
* @return 返回操作结果, 0表失败, 1表成功
*/
public static int ModiXMLFile(String filename,String newfilename,ItemVo itemvo){
int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
/** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */
List list = document.selectNodes("/bcaster/item/@id");
Iterator iter = list.iterator();
int length=0;
while(iter.hasNext()){
Attribute attribute = (Attribute)iter.next();
if(attribute.getValue().equals(itemvo.getId()))
{
length=attribute.getParent().attributes().size();
if(length>2){
attribute.getParent().attribute(0).setValue(itemvo.getItem_url());
attribute.getParent().attribute(1).setValue(itemvo.getLink());
attribute.getParent().attribute(2).setValue(itemvo.getId());
}else
{
document.getRootElement().remove(attribute.getParent());
Element emp1Element = DocumentHelper.createElement("item");
emp1Element.addAttribute("item_url", itemvo.getItem_url());
emp1Element.addAttribute("link", itemvo.getLink());
emp1Element.addAttribute("id", itemvo.getId());
emp1Element.addAttribute("titleName", itemvo.getTitleName());
document.getRootElement().add(emp1Element);
}
}
}
try{
/** 将document中的内容写入文件中 */
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding( "UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(newfilename)),format);
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
Dom4jDemo.formatXMLFile(newfilename);
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
/******
* 更新xml文件中的属性
* @param filename
* @param newfilename
* @param itemvo
* @return
* xml文件 ,节点位置 使用xPath比如://book[@type='society'],节点名称, 节点新值
* @return 返回操作结果, 0表失败, 1表成功
*/
public static int updateXMLFileAttribute(String filePathAndName,String newfilePathAndName,String noteXPath,String[] attributeName,String[] attributeValue)
{
try {
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filePathAndName));
//获取节点位置
Element noteElement=(Element)document.selectSingleNode(noteXPath);
if(attributeName!=null && attributeValue!=null && attributeName.length == attributeValue.length)
{
for(int j=0;j<attributeName.length;j++)
{
Attribute attribute = noteElement.attribute(attributeName[j]);
//System.out.print("属性名:"+attribute.getName()+" 属性值:"+attribute.getValue());
//移除属性
if(attribute!=null)
{
noteElement.remove(attribute);
noteElement.addAttribute(attributeName[j], attributeValue[j]);
}
}
}
/** 将document中的内容写入文件中 */
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding( "UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(newfilePathAndName)),format);
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
Dom4jDemo.formatXMLFile(newfilePathAndName);
return 1;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public static int deleteXMLFile(String filename,String newfilename,ItemVo itemvo){
int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
/** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */
List list = document.selectNodes("/bcaster/item/@id");
Iterator iter = list.iterator();
while(iter.hasNext()){
Attribute attribute = (Attribute)iter.next();
if(attribute.getValue().equals(itemvo.getId())){
document.getRootElement().remove(attribute.getParent());
}
}
try{
/** 将document中的内容写入文件中 */
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding( "UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(newfilename)),format);
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
Dom4jDemo.formatXMLFile(filename);
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
public static int addXMLFile(String filename,String newfilename,ItemVo itemvo){
int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
// 添加员工节点 "employee"
Element emp1Element = DocumentHelper.createElement("item");
emp1Element.addAttribute("item_url", itemvo.getItem_url());
emp1Element.addAttribute("link", itemvo.getLink());
emp1Element.addAttribute("id", itemvo.getId());
emp1Element.addAttribute("titleName", itemvo.getTitleName());
document.getRootElement().add(emp1Element);
try{
/** 将document中的内容写入文件中 */
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding( "UTF-8");
XMLWriter writer = new XMLWriter( new FileOutputStream(new File(newfilename)),format);
writer.write(document);
writer.close();
/** 执行成功,需返回1 */
Dom4jDemo.formatXMLFile(filename);
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
public static List loadItemList(String filename){
List list=new ArrayList();
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
List xmllist= document.selectNodes("/bcaster/item");
for (int i = 0, n = xmllist.size(); i < n; i++)
{
ItemVo itemvo=new ItemVo();
DefaultElement itemElement = (DefaultElement) xmllist.get(i);
String item_url = itemElement.attributeValue("item_url");
String link = itemElement.attributeValue("link");
String id = itemElement.attributeValue("id");
String titleName = itemElement.attributeValue("titleName");
itemvo.setId(id);
itemvo.setItem_url(item_url);
itemvo.setLink(link);
itemvo.setTitleName(titleName);
list.add(itemvo);
// System.out.println(item_url + "===========" + link);
}
}catch(Exception ex){
ex.printStackTrace();
}
return list;
}
/**
* 格式化XML文档,并解决中文问题
* @param filename
* @return
*/
public static int formatXMLFile(String filename){
int returnValue = 0;
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
XMLWriter output = null;
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML字符集编码 */
format.setEncoding("UTF-8");
output = new XMLWriter(new FileOutputStream(new File(filename)),format);
output.write(document);
output.close();
/** 执行成功,需返回1 */
returnValue = 1;
}catch(Exception ex){
ex.printStackTrace();
}
return returnValue;
}
}
分享到:
相关推荐
接下来,我们将创建一个`SAXReader`实例,它是DOM4J中的解析器,用于读取XML文件: ```java SAXReader reader = new SAXReader(); ``` 然后,使用`reader`读取XML文件并获取`Document`对象,`Document`代表整个XML...
在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其插入到现有结构中。首先,你需要通过`DocumentFactory`创建一个`Element`,然后使用`Element`的`addContent()`方法或`insertContent()`方法将...
dom4j解析节点名称和值,放入一个string类型的xml字符串输出标签对应的名称以及值的map
删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点删除DOM节点...
dom4j常用方法 i.SAXReader sr = new SAXReader(); 生成解析器对象 ii.解析器对象.read(file对象); 解析文件生成Document对象 iii.文档对象.getRootElement() 获取跟元素节点 iv.元素节点.elements() 获取到指定...
超全面javaweb教程第6天-_12_使用dom4j实现删除节点的操作
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
超全面javaweb教程第6天-_08_使用dom4j实现在末尾添加节点的操作
通过DOM4J可以轻松地实现节点的添加、修改和删除。以下是修改XML文件的关键代码: ```java // 使用SAXReader读取XML文件 SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File...
DOM4J中的Attribute类提供了创建、修改和删除属性的方法。 3. **Document**: Document类表示整个XML文档,是整个XML结构的根节点。它包含了XML文档的声明、元素、注释等所有信息。 4. **XPath**: DOM4J支持XPath...
在DOM4J中,可以使用`Element`类来创建新的元素,并通过`addElement()`方法将其添加到已有元素的子节点中。例如,如果有一个`root`元素,我们可以通过`root.addElement("newElement")`来添加一个新的子元素`new...
3. **基本概念**:介绍DOM4J中的核心类,如`Document`(文档对象)、`Element`(元素)、`Attribute`(属性)、`Text`(文本节点)等,以及它们之间的关系。 4. **解析XML**:讲解如何使用DOM4J解析XML文件,包括...
DOM4J是Java社区中一个强大且流行的XML处理库,它提供了丰富的API,使得XML的读取、解析、创建和修改变得简单易行。这个名为"dom4j-2.1.3.zip"的压缩包文件,正是DOM4J库的版本2.1.3,包含了该库的完整源码和必要的...
1. **引入DOM4j依赖**:在`pom.xml`文件中,添加DOM4j的依赖项,这样Maven会在构建时自动下载并管理这个库。 ```xml <groupId>org.dom4j <artifactId>dom4j <version>2.1.3 ``` 2. **创建XML文件**:使用...
* NodeFilter:定义了在 dom4j 节点中产生的一个滤镜或谓词的行为。 * ProcessingInstruction:定义 XML 处理指令。 * Text:定义 XML 文本节点。 * Visitor:用于实现 Visitor 模式。 * XPath:在分析一个字符串后...
超全面javaweb教程第6天-_09_使用dom4j实现在在特定位置添加节点的操作
- **查询XML**:DOM4J支持XPath查询语言,可以方便地查找XML文档中的特定节点。 - **修改XML**:对找到的节点进行添加、删除、替换等操作,实现XML文档的动态修改。 - **事件驱动处理**:DOM4J支持SAX事件驱动的...
- **Document**: 在DOM4J中,Document代表整个XML文档,它是XML结构的根节点。 - **Element**: Element是XML文档中的一个节点,代表XML的元素,如`<tag>`。 - **Attribute**: Attribute表示元素上的属性,如`...