- /**************************************
- * 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
最新推荐文章于 2024-09-17 17:42:27 发布