设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Java 程序设计开发讨论
›
[求助] XML文件写入的问题 困扰好几天了
返回列表
查看:
2086
|
回复:
5
[求助] XML文件写入的问题 困扰好几天了
[复制链接]
KevinChen
KevinChen
当前离线
积分
832
IP卡
狗仔卡
发表于 2006-8-2 12:56:03
|
显示全部楼层
|
阅读模式
修改XML文件的一个问题
假设有一个config.xml文件,我每次读取都要更改里面的一个cout的数值
当我用普通的java程序写的时候,一切正常,但是当我把修改XML的程序做成Java Bean在Tomcat下运行的时候,每次到写入的时候老是提示找不到文件了,一直给我java.io.FileNotFoundException异常信息,不管我用的是绝对路径还是相对路径,都是一样
做了一下小的排除,就是在文件写入的时候发生的错误,实在不知道怎么解决了
很郁闷了,一个程序大体写完,然后在Tomcat上折腾了好久了,都是这个问题
贴一下代码
package com.cmpp.provision;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.*;
public class ProvisionConfig {
public void setConfig() throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
java.io.File path = new java.io.File("/home/kevin/Tomcat4/webapps/Provision/config.xml");
Document doc = db.parse(path);
doc.normalize();
readXML(doc);
writeXML(doc);
}
public void readXML(Document doc) throws Exception
{
NodeList configure = doc.getElementsByTagName("item");
String Version = ((Element) configure.item(0)).getElementsByTagName(
"value").item(0).getFirstChild().getNodeValue();
String SendDeviceID = ((Element) configure.item(1))
.getElementsByTagName("value").item(0).getFirstChild()
.getNodeValue();
String DestDeviceID = ((Element) configure.item(2))
.getElementsByTagName("value").item(0).getFirstChild()
.getNodeValue();
String SPID = ((Element) configure.item(3)).getElementsByTagName(
"value").item(0).getFirstChild().getNodeValue();
setVersion(Version);
setSendDeviceID(SendDeviceID);
setDestDeviceID(DestDeviceID);
setSpid(SPID);
}
public void writeXML(Document doc) throws Exception
{
NodeList configure = doc.getElementsByTagName("item");
Element Count = (Element) configure.item(4);
String count = Count.getElementsByTagName("value").item(0).getFirstChild().getNodeValue();
int tmp = Integer.parseInt(count);
Count.getElementsByTagName("value").item(0).getFirstChild().setNodeValue(String.valueOf(tmp+1));
if (tmp > 1e9 - 1) {
count = "1";
Count.getElementsByTagName("value").item(0).getFirstChild()
.setNodeValue("2");
}
// 保存XML的修改
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
java.io.File path = new java.io.File("/home/kevin/Tomcat4/webapps/Provision/config.xml");
StreamResult result = new StreamResult(path);
if(path.canWrite())
transformer.transform(source, result);
setTransactionID(count);
}
private String version = "1.5.0";
private String msidsn;
private String spserviceid;
private String sendDeviceID;
private String destDeviceID;
private String spid;
private String transactionID;
public ProvisionConfig() {
}
public String getVersion() {
return this.version;
}
public String getMsidsn() {
return this.msidsn;
}
public String getSPServiceID() {
return this.spserviceid;
}
public String getSendDeviceID() {
return this.sendDeviceID;
}
public String getDestDeviceID() {
return this.destDeviceID;
}
public String getSPID() {
return this.spid;
}
public String getTransactionID() {
return this.transactionID;
}
public void setVersion(String Version) {
this.version = Version;
}
public void setSendDeviceID(String SendDeviceID) {
this.sendDeviceID = SendDeviceID;
}
public void setDestDeviceID(String DestDeviceID) {
this.destDeviceID = DestDeviceID;
}
public void setSpserviceid(String SPServiceID) {
this.spserviceid = SPServiceID;
}
public void setSpid(String SPID) {
this.spid = SPID;
}
public void setMsidsn(String MSISDN) {
this.msidsn = MSISDN;
}
public void setTransactionID(String count) {
String s = "0000000000" + count;
this.transactionID = this.spid
+ s.substring(s.length() - 10, s.length());
}
}
复制代码
是在很不解
就算是我写入到一个新文件也不行,很郁闷
但是在普通的java程序里就可以
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
fangshun
fangshun
当前离线
积分
661
IP卡
狗仔卡
发表于 2006-8-2 13:35:51
|
显示全部楼层
把可配置文件放在webapps底下是不明智的,如果我不要求解压war怎么办!读取是可以的,但是还需要编辑,最好放到指定的配置目录
回复
支持
反对
使用道具
举报
显身卡
KevinChen
KevinChen
当前离线
积分
832
IP卡
狗仔卡
楼主
|
发表于 2006-8-2 13:51:14
|
显示全部楼层
我试过把config.xml放到/目录下,但是还是不让我写,不知道为什么
是不是Tomcat的配置问题?
还有没有把程序打成war包
回复
支持
反对
使用道具
举报
显身卡
KevinChen
KevinChen
当前离线
积分
832
IP卡
狗仔卡
楼主
|
发表于 2006-8-2 23:22:55
|
显示全部楼层
解决了,但是还是不知为什么
将一下代码改为
java.io.File path = new java.io.File("/home/kevin/Tomcat4/webapps/Provision/config.xml");
StreamResult result = new StreamResult(path);
复制代码
java.io.File path = new java.io.File("/home/kevin/Tomcat4/webapps/Provision/config.xml");
StreamResult result = new StreamResult(path.toURI().getPath());
复制代码
这样就可以了,不知道为什么要绕这样一圈
回复
支持
反对
使用道具
举报
显身卡
空心菜
空心菜
当前离线
积分
1205
IP卡
狗仔卡
发表于 2006-8-17 22:26:50
|
显示全部楼层
应该用this.getClass().getResourceAsStream().......,
回复
支持
反对
使用道具
举报
显身卡
hantsy
hantsy
当前离线
积分
2617
IP卡
狗仔卡
发表于 2006-9-2 09:37:14
|
显示全部楼层
Post by
空心菜
应该用this.getClass().getResourceAsStream().......,
这个和类的classLoader有关,不同的服务器得到的结果可能不一样。。。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表