jdom 与xpath,操作xml元素

来源:互联网 发布:淘宝客服岗位职责描述 编辑:程序博客网 时间:2024/06/05 09:35

可参考 http://www.ibm.com/developerworks/cn/xml/x-jdom/

 

jdom自身依赖三个jar包,分别为  jaxen-core.jar  jaxen-jdom.jar  saxpath.jar

例子代码如下

 

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;

public class TestJdom {
        public static void main(String[] args) {
                try {
                        TestJdom javaXML = new TestJdom();
                        javaXML.UpdateXMLDoc();
                } catch (Exception e) {
                        e.printStackTrace();
                }

        }
       
        //创建新的xml文件
        public void BuildXMLDoc() throws IOException, JDOMException {
                // 创建根节点 list;   
                Element root = new Element("list");
                // 根节点添加到文档中;   
                Document doc = new Document(root);
                // 此处 for 循环可替换成 遍历 数据库表的结果集操作;   
                for (int i = 0; i < 5; i++) {
                        // 创建节点 user;
                        Element element = new Element("company");
                        // 给 company 节点添加属性 id;
                        element.setAttribute("id", "" + i);
                        // 给 company 节点添加子节点并赋值
                        // new Element("company_name")中的 "company_name" 替换成表中相应字段,setText("name")中 "name 替换成表中记录值;
                        element.addContent(new Element("company_name").setText("name" + i));
                        element.addContent(new Element("company_email").setText("@" + i
                                        + ".com"));
                        // 给父节点list添加company子节点;  
                        root.addContent(element);
                }
                writeXml(doc);               
        }
       
        //读取和修改xml文件
        public void UpdateXMLDoc() throws IOException, JDOMException {
                SAXBuilder sb = new SAXBuilder();
                Document doc = sb.build("d:/company_list.xml");
                Element root = doc.getRootElement();
               
                List list = XPath.selectNodes(root, "/list/company");
               
                for(int i=0 ;i<list.size();i++){
                        Element ele =(Element)list.get(i);
                        System.out.println(ele.getAttributeValue("id"));
                       
                        ele.setAttribute("id", ele.getAttributeValue("id")+"id");
                }
                writeXml(doc);               
        }
       
        private void writeXml(Document Doc) throws FileNotFoundException, IOException{
                Format format=Format.getPrettyFormat(); //静态方法,产生两个空格的缩进格式               
                format.setIndent("    ");               //变成四个空格的缩进格式,用四个空格字符作参数               
                format.setEncoding("gb2312");           //设置编码格式
                XMLOutputter XMLOut = new XMLOutputter(format);

                // 输出company_list.xml文件;  
                XMLOut.output(Doc, new FileOutputStream("d:/company_list.xml"));
        }
}