1、生成XML
- public void createApplicationConfigXML(){
- //建立document對象
- try {
- Document document = DocumentHelper.createDocument();
- Element root = document.addElement("root");//添加文檔根
- root.addComment("這個一個註釋");//加入一行註釋
- Element request = root.addElement("request"); //添加root的子節點
- request.addAttribute("type", "cat");
- request.addAttribute("flow", "tong");
- request.addAttribute("time", "2009");
- Element pro = request.addElement("pro");
- pro.addAttribute("type", "att");
- pro.addAttribute("name", "附件");
- pro.addText("測試哈子");
- Element cd = request.addElement("pro");
- cd.addAttribute("type", "cd");
- cd.addAttribute("name", "特殊字符過濾");
- cd.addCDATA("特殊字符");
- //輸出全部原始數據,在編譯器中顯示
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("GBK");//根據需要設置編碼
- XMLWriter writer = new XMLWriter(System.out, format);
- document.normalize();
- writer.write(document);
- writer.close();
- // 輸出全部原始數據,並用它生成新的我們需要的XML文件
- XMLWriter writer2 = new XMLWriter(new FileWriter(new File(
- "test.xml")), format);
- writer2.write(document); //輸出到文件
- writer2.close();
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-----------------------------------------------------------------
下面是解析和修改XML
XML文件內容如下:
- <?xml version="1.0" encoding="utf-8"?>
- <root>
- <request type="Pending" flowType="GENERAL" flowName="報銷流程"
- docId="185647" flowId="16409" nodeName="報銷人確認" wikId="58288"
- sendId="1210040" userId="1210040" createDate="2009-12-03"
- title="費用報銷 " flowCreaterId="1210040" nodeType="1"
- bosTime="2009-12-03 09:36:15">
- <pro type="att"></pro>
- <pro type="textarea" name="OP_bxryj" title="處理意見" need="true"></pro>
- </request>
- </root>
修改
- public String getApplcationConfigFromXMLTest(){
- String value = "";
- try {
- SAXReader sax = new SAXReader();
- Document xmlDoc = sax.read(new File(this.UBSSDIC_PATH));
- Element root = xmlDoc.getRootElement();//根節點
- Iterator it = root.elementIterator();
- while(it.hasNext()){
- Element ele = (Element)it.next();
- Attribute attribute = ele.attribute("type");
- if(attribute.getStringValue().equals("Pending")){
- attribute.setValue("sendread2");//修改屬性節點的值
- }
- Attribute flowType = ele.attribute("flowType");
- flowType.detach();//刪除某個屬性
- ele.addAttribute("type", "Pending");//添加一個屬性節點
- }
- Element new_cdata = root.addElement("new_cdata");//添加一個元素
- new_cdata.addCDATA("tst&ree");
- Element new_ele = root.addElement("new_ele");//添加一個元素
- new_ele.addText("33434343");
- Element obj = (Element)root.selectObject("//pro[@type='att']");//根據XPath查找元素
- obj.setText("測試dddddd");//修改元素的值 即text節點
- //輸出全部原始數據,在編譯器中顯示
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("GBK");
- XMLWriter writer = new XMLWriter(System.out, format);
- writer.write(xmlDoc);
- writer.close();
- // 輸出全部原始數據,並用它生成新的我們需要的XML文件
- XMLWriter writer2 = new XMLWriter(new FileWriter(new File(
- "test.xml")), format);
- writer2.write(xmlDoc); //輸出到文件
- writer2.close();
- } catch (DocumentException e) {
- System.out.println(e.getMessage());
- e.printStackTrace();
- }catch(IOException e){
- e.printStackTrace();
- }
- return value ;
- }
解析
- public void parseApplicationConfigXML(){
- try {
- SAXReader sax = new SAXReader();
- Document xmlDoc = sax.read(new File("E:\\20090316HPS\\Dom4jTest\\t.xml"));
- Element root = xmlDoc.getRootElement();//根節點
- Iterator it = root.elementIterator("request");
- while(it.hasNext()){
- Element request = (Element)it.next();
- System.out.println(request.getName());
- System.out.println(request.attributeValue("type"));
- System.out.println(request.attributeValue("flow"));
- System.out.println(request.attributeValue("time"));
- }
- System.out.println("-------------------------------------------");
- List list = root.selectNodes("//pro");
- for(int i = 0; i < list.size(); i++){
- Element pro = (Element)list.get(i);
- System.out.println(pro.getName());
- System.out.println(pro.attributeValue("type"));
- System.out.println(pro.attributeValue("name"));
- System.out.println(pro.getText());
- System.out.println("+++++++++++++++++++++++++++++++++");
- }
- } catch (DocumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }