- /**************************************
- * Title: 修改XML文件
- * Description: EditXML類
- * date : 2006-3-25
- * author : zhanglei
- ***************************************/
- //package com.tonbeller.jpivot.chart;
- package server;
- import org.w3c.dom.*;
- import javax.xml.parsers.*;
- //import javax.xml.transform.*;
- //import javax.xml.transform.dom.DOMSource;
- //import javax.xml.transform.stream.StreamResult;
- import java.io.*;
- //import java.util.*;
- import org.apache.xml.serialize.*;
- public class EditXML {
- private String filename = "";
- private Document document;
- private Element root;
- private Element begingItem;
- // private NodeList listMy;
- public EditXML(String inFile) throws Exception {
- filename = inFile;
- System.out.println("初始化EditXML:" + inFile);
- //爲解析XML作準備,創建DocumentBuilderFactory實例,指定DocumentBuilder
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- dbf.setNamespaceAware(true); //new add
- DocumentBuilder db = null;
- try {
- db = dbf.newDocumentBuilder();
- } catch (ParserConfigurationException pce) {
- System.out.println("EditXML類EditXML異常:" + pce);//出異常時輸出異常信息,然後退出,下同
- }
- document = null;
- try {
- document = db.parse(new File(filename));
- document.getDocumentElement().normalize(); //new add
- } catch (DOMException dom) {
- System.out.println("EditXML類EditXML異常:" + dom);
- } catch (IOException ioe) {
- System.out.println("EditXML類EditXML異常:" + ioe);
- }
- //解析XML全過程,先取根元素
- root = document.getDocumentElement();
- }
- //修改節點值
- public int EditNodeVal(String beginItem, String ItemName, String itemVal) {
- try {
- NodeList items = root.getElementsByTagName(beginItem);
- begingItem = (Element) items.item(0);
- NodeList names = begingItem.getElementsByTagName(ItemName);
- Element editItem = (Element) names.item(0);
- editItem.getFirstChild().setNodeValue(itemVal);
- return 0;
- } catch (Exception e) {
- //----------2007.12.7.tengfei----------//
- System.out.println("Calling increasing node function");
- AddNodeVal(beginItem, ItemName, itemVal);
- //----------2007.12.7.tengfei----------//
- return -1;
- }
- }
- //修改節點屬性
- public int EditNodeAttr(String beginItem, String ItemName, String sxName,
- String sxVal) {
- try {
- NodeList items = root.getElementsByTagName(beginItem);
- begingItem = (Element) items.item(0);
- //System.out.println("2007.12.6:root節點爲:"+begingItem);
- NodeList names = begingItem.getElementsByTagName(ItemName);
- Element editItem = (Element) names.item(0);
- //System.out.println("2007.12.6:root節點爲:"+editItem);
- editItem.setAttribute(sxName, sxVal);
- return 0;
- } catch (Exception e) {
- //----------2007.12.7.tengfei----------//
- System.out.println("Calling increasing node attributes function");
- AddNodeAttr(beginItem, ItemName, sxName, sxVal);
- //----------2007.12.7.tengfei----------//
- return -1;
- }
- }
- //----------2008.11.19(tengfei)----------//
- //增加節點值
- public int AddNodeVal(String beginItem, String ItemName, String itemVal) {
- try {
- NodeList items = root.getElementsByTagName(beginItem);
- begingItem = (Element) items.item(0);
- Element addNode = document.createElement(ItemName);
- begingItem.appendChild(addNode);
- addNode.appendChild(document.createTextNode(itemVal));
- return 0;
- } catch (Exception ex) {
- System.out.println("EditXML類AddNodeVal異常:" + ex);
- return -1;
- }
- }
- //----------2008.11.19(tengfei)----------//
- //----------2008.11.19(tengfei)----------//
- //增加節點屬性
- public int AddNodeAttr(String beginItem, String ItemName, String sxName,
- String sxVal) {
- try {
- NodeList items = root.getElementsByTagName(beginItem);
- begingItem = (Element) items.item(0);
- Element addNode = document.createElement(ItemName);
- begingItem.appendChild(addNode);
- addNode.setAttribute(sxName, sxVal);
- return 0;
- } catch (Exception e) {
- System.out.println("EditXML類AddNodeAttr異常:" + e);
- return -1;
- }
- }
- //----------2008.11.19(tengfei)----------//
- //增加節點及屬性數組
- public int AddNodeAttr(String beginItem, String ItemName,int m ,String[] sxName,String[] sxVal) {
- try {
- NodeList items = root.getElementsByTagName(beginItem);
- begingItem = (Element) items.item(0);
- Element addNode = document.createElement(ItemName);
- begingItem.appendChild(addNode);
- for(int i=0 ; i<= m ;i++){
- addNode.setAttribute(sxName[i], sxVal[i]);
- }
- return 0;
- } catch (Exception e) {
- System.out.println("EditXML類AddNodeAttr異常:" + e);
- return -1;
- }
- }
- //----------2008.01.02(tengfei)----------//
- //刪除節點
- public void deleleNode(String beginItem, String ItemName){
- try {
- NodeList items = root.getElementsByTagName(beginItem);
- begingItem = (Element) items.item(0);
- NodeList names = begingItem.getElementsByTagName(ItemName);
- Element delNode = (Element) names.item(0);
- //刪除節點
- System.out.println("刪除子節點"+delNode);
- begingItem.removeChild(delNode);
- } catch(Exception e) {
- System.out.println("EditXML類deleleNode異常:" + e);
- }
- }
- //----------2008.01.02(tengfei)----------//
- /**
- * toSave 存儲XML文件
- *
- * @param flag
- * 此XML文件頭標誌 flag = 0 爲'UTF-8'標識 flag = 1 爲"GB2312"標識 flag = 2
- * 爲"UTF-8",standalone="yes"標識 flag = 3
- * 爲"gb2312",standalone="yes"標識 flag = 4 爲'UTF-16'標識
- */
- public void toSave(String flag) {
- try {
- //生成OutputFormat
- OutputFormat opf = new OutputFormat(document);
- opf.setVersion("1.0");
- if (flag.equals("1") || flag.equals("3")) {
- opf.setEncoding("gb2312"); //改成gb2312就行了UTF-8
- } else {
- opf.setEncoding("UTF-8"); //改成gb2312就行了UTF-8
- }
- if (flag.equals("2") || flag.equals("3")) {
- opf.setStandalone(true); //standalong
- } else {
- opf.setStandalone(false); //standalong
- }
- opf.setIndent(1); //標籤是否加空格
- opf.setMediaType("application/xml");
- File myXML = new File(filename);
- FileOutputStream os = new FileOutputStream(myXML);
- XMLSerializer serializer = new XMLSerializer(os, opf);
- serializer.serialize(document);
- } catch (Exception ex) {
- System.out.println("EditXml中toSave():" + ex);
- }
- }
- public static void main(String args[]) {
- // try {
- // String fileName = "src//config_XML//test.xml";
- // File file = new File(fileName);
- // String filefilePath = file.getAbsolutePath();
- // System.out.println("文件絕對路徑爲:"+filePath);
- // EditXML editX = new EditXML(filePath);
- // editX.deleleNode("ParameterConfig", "Pone");
- // editX.toSave("0");
- // } catch(Exception e) {
- // System.out.println("測試函數"+e);
- // }
- try {
- EditXML editxml = new EditXML(
- "H://JB_Work//HbrlXMLServer//config.xml");
- editxml.EditNodeVal("System", "ShowFrameFlag", "n");
- editxml.EditNodeVal("System", "maxsjbsxh", "23432");
- editxml.EditNodeAttr("System", "maxsxh", "maxbh", "32");
- editxml.EditNodeAttr("System", "maxsxh", "maxpc", "33");
- editxml.toSave("1");
- } catch (Exception ex) {
- }
- //修改
- DocumentBuilder parser;
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- Document doc = null;
- Element root;
- Element begingItem;
- try {
- parser = factory.newDocumentBuilder();
- doc = parser.parse("links.xml");
- root = doc.getDocumentElement();
- NodeList items = root.getElementsByTagName("link");
- begingItem = (Element) items.item(0);
- NodeList names = begingItem.getElementsByTagName("url");
- Element editItem = (Element) names.item(0);
- editItem.setAttribute("newWindow", "yes");
- editItem.getFirstChild().setNodeValue("new覺得深刻法");
- Element title = doc.createElement("Title");
- title.appendChild(doc.createTextNode("mytitle"));
- root.appendChild(title);
- Element content = doc.createElement("Content");
- content.setAttribute("sx1", "sx1v");
- //content.removeAttribute("sx2");
- content.appendChild(doc.createTextNode("mycontent"));
- content.getFirstChild().setNodeValue("似的咖啡鹼但是");
- root.appendChild(content);
- } catch (Exception e) {
- System.out.println(e);
- }
- try {
- //生成OutputFormat
- OutputFormat opf = new OutputFormat(doc);
- opf.setVersion("1.0");
- opf.setEncoding("gb2312"); //改成gb2312就行了UTF-8
- opf.setStandalone(false); //standalong
- opf.setIndent(1); //標籤是否加空格
- opf.setMediaType("application/xml");
- File myXML = new File("user.xml");
- FileOutputStream os = new FileOutputStream(myXML);
- XMLSerializer serializer = new XMLSerializer(os, opf);
- serializer.serialize(doc);
- } catch (Exception ex) {
- System.out.println(ex);
- }
- }
- }
EditXML.java
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.