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;
}
}
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;
}
}