public class XmlOperate {
/**
* 通过 xml文件名 读取xml文件
* @param fileName xml文件名称
* @return Document 文档对象
* @throws DocumentException
*/
public Document readXMLDocument(String fileName) throws DocumentException
{
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
return document;
}
/**
* 根据 文件路径 和 xml文档对象 写入xml文件
* @param document 文档对象
* @param fileName xml文件名称
* @throws IOException
*/
public void writerXMLDocument(Document document,String fileName) throws IOException
{
FileWriter fileWriter = new FileWriter(fileName);
XMLWriter writer = new XMLWriter(fileWriter, OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
}
/**
* 添加 book节点
* @param rootElement 根节点
* @param idValue id属性的值
*/
public void addBookNode(Element rootElement,String idValue)
{
//创建book节点
Element bookElement = DocumentHelper.createElement("book");
//添加 book节点中的 id属性
bookElement.addAttribute("id", idValue);
//创建title节点
Element titleElement = DocumentHelper.createElement("title");
//添加 title节点中的文本节点
titleElement.addText("Learning XML");
//创建author节点
Element authorElement = DocumentHelper.createElement("author");
//添加 author节点中的文本节点
authorElement.addText("Lynn");
//创建year节点
Element yearElement = DocumentHelper.createElement("year");
//添加 year节点中的文本节点
yearElement.addText("2012");
//创建price节点
Element priceElement = DocumentHelper.createElement("price");
//添加 price节点中的文本节点
priceElement.addText("50.00");
//在book节点依次添加 子节点 title author year price
bookElement.add(titleElement);
bookElement.add(authorElement);
bookElement.add(yearElement);
bookElement.add(priceElement);
//在 根节点 bookstore中添加 book节点
rootElement.add(bookElement);
}
/**
* 根据id的值 删除book节点
* @param rootElement 根节点
* @param idValue id属性的值
*/
public void removeBookNode(Element rootElement,String idValue)
{
//找到 要删除的book节点
List<Element> elements = rootElement.selectNodes("//book");
//遍历 book节点
for (Element element : elements) {
if(idValue.equals(element.attribute("id").getText()))
{
//从根节点 移除book元素
rootElement.remove(element);
break;
}
}
}
/**
* 根据book节点的id属性的值 来查找某个 book节点
* @param rootElement 根节点
* @param idValue id属性的值
* @return 找到的book节点 没有找到则返回null
*/
public Element findBookNodeById(Element rootElement,String idValue)
{
//找到 所有的book节点
List<Element> elements = rootElement.selectNodes("//book");
for (Element element : elements) {
if(idValue.equals(element.attribute("id").getText()))
{
return element;
}
}
return null;
}
/**
* 查找所有的book节点
* @param rootElement 根节点
* @return 返回所有的book节点
*/
public List<Element> findBooksNode(Element rootElement)
{
return rootElement.selectNodes("//book");
}
/**
* 更新 id属性所指定的值的book节点中的 title author year price 节点内容
* @param rootElement 根节点
* @param idValue id属性的值
* @param title title属性的值
* @param author author属性的值
* @param year year属性的值
* @param price price属性的值
*/
public void updateBookNode(Element rootElement,String idValue,String title,String author,String year,String price)
{
//找到 所有的book节点
List<Element> elements = rootElement.selectNodes("//book");
for (Element element : elements) {
if(idValue.equals(element.attribute("id").getText()))
{
if(title != "")
{
element.element("title").setText(title);
}
if(author != "")
{
element.element("author").setText(author);
}
if(year != "")
{
element.element("year").setText(year);
}
if(price != "")
{
element.element("price").setText(price);
}
break;
}
}
}
}
读取:SAXReader
写入:XMLWriter
创建元素:DocumentHelper.createElement
增加属性:Element.addAttribute
选择节点:rootElement.selectNodes("//book")
移除元素:rootElement.remove(element)
得到元素的文本:element.attribute("id").getText()
得到节点的文本:element.elementText("id")或者element.element("id").getText()
元素的下级元素设置文本:element.element("title").setText(title)
获取根元素:document.getRootElement()
public HashMap<String, HashMap<String,String>> loadXML(String filename){
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(new File(filename));
// 获取根结点
Element root = document.getRootElement();
// 用于记录bean的条数
// 遍历根结点(beans)的所有孩子节点(肯定是bean节点)
for (Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
Attribute idAttr = element.attribute("id");
String idName = idAttr.getValue();
Attribute classAttr = element.attribute("class");
String className = classAttr.getValue();
bean.put("class", className);
beans.put(idName, bean);
}
} catch (Exception e) {
e.printStackTrace();
}
return beans;
}
本文详细介绍了使用SAXReader读取XML文件,并通过XMLWriter写入XML文件的过程。此外,文章还展示了如何在XML文档中添加、删除、查找和更新book节点的相关操作。
411

被折叠的 条评论
为什么被折叠?



