Java XMLOutPutter和FileWriter不使用上下文路径
您好,我很难理解为什么不能使用上下文路径写入xml文件,但可以使用它获取xml文档。我正在尝试向现有xml文件添加内容Java XMLOutPutter和FileWriter不使用上下文路径,java,xml,servlets,Java,Xml,Servlets,您好,我很难理解为什么不能使用上下文路径写入xml文件,但可以使用它获取xml文档。我正在尝试向现有xml文件添加内容 URL path = getServletContext().getResource("/WEB-INF/workinfo.xml"); 在我的servlet中,我使用这一简单的行来获取xml文件的路径 URL path = getServletContext().getResource("/WEB-INF/workinfo.xml"); 然后我实例化一个对象,这也是执行x
URL path = getServletContext().getResource("/WEB-INF/workinfo.xml");
在我的servlet中,我使用这一简单的行来获取xml文件的路径
URL path = getServletContext().getResource("/WEB-INF/workinfo.xml");
然后我实例化一个对象,这也是执行xml工作的方法所必需的。然后调用该方法
WorktoXML workto = new WorktoXML();
workto.uploadToXML(works, path);
下面是我的方法,它在我的类WorktoXML中,我正在从我的servlet调用它
public void uploadToXML(work workss, URL path) throws JDOMException,
IOException {
work work = workss;
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(path.toString());
Element root = document.getRootElement();
List<Element> list = root.getChildren("works");
String id = Integer.toString(list.size());
Element works = new Element("works");
works.setAttribute(new Attribute("id", id));
works.addContent(new Element("username").setText(work.getUsername()));
works.addContent(new Element("subject").setText(work.getSubject()));
works.addContent(new Element("body").setText(work.getBody()));
works.addContent(new Element("imageurl").setText(work.getImagepath()));
document.getRootElement().addContent(works);
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.output(document, System.out);
xmlOutput.setFormat(Format.getPrettyFormat());
//This is where it goes wrong.
xmlOutput.output(document,new FileWriter(path.toString())));
}
public void uploadToXML(工作,URL路径)抛出JDOMException,
IOException{
工作=工作;
SAXBuilder SAXBuilder=新SAXBuilder();
Document Document=saxBuilder.build(path.toString());
元素根=document.getRootElement();
List=root.getChildren(“工作”);
字符串id=Integer.toString(list.size());
要素工程=新要素(“工程”);
works.setAttribute(新属性(“id”,id));
works.addContent(新元素(“用户名”).setText(work.getUsername());
works.addContent(新元素(“subject”).setText(work.getSubject());
works.addContent(新元素(“body”).setText(work.getBody());
works.addContent(新元素(“imageurl”).setText(work.getImagepath());
document.getRootElement().addContent(works);
XMLOutputter xmlOutput=新的XMLOutputter();
输出(文档,系统输出);
setFormat(Format.getPrettyFormat());
//这就是问题所在。
输出(文档,新的FileWriter(path.toString());
}
运行上述命令会导致java.io.FileNotFoundException:
如果我只使用xml文件的绝对路径,它就可以工作,但这并不理想
感谢您的帮助。请告诉我是否可以提供有关我的问题的更多信息。出于安全原因,.war文件是不可变的 当然,容器可以解压.war文件以获得更好的性能,但是解压后的文件永远不应该更新。当然,除了用新的.war文件或课程升级webapp 任何上载的文件都必须存储在.war文件之外以及分解/解包的.war目录结构之外的其他位置 你把它放在哪里取决于你自己。在目录中,在数据库中,在其他位置
如果您希望webapp附带默认资源,但允许上载自定义资源,请将自定义资源存储在您选择的位置。以后查询资源时,首先检查是否存在自定义文件。如果没有,那么您将像以前一样获得默认资源,并将其返回。非常感谢您的帮助。多亏了你,我现在成功了!