linux下用dom4j写入xml时 报错java.io.FileNotFoundException..(没有那个文件或目录
来源:互联网 发布:网络海外代购发展趋势 编辑:程序博客网 时间:2024/06/10 02:43
今天在使用dom4j写入xml文件是报错:java.io.FileNotFoundException..(没有那个文件或目录)
但是我去读取文件时却是正常的,这时我想到了linux下的权限问题,所一我改了权限,再试,还是这个错误,百度一下,发现这种错误大多是路径不对或者文件名错误还有可能是文件不存在,在读取的时候却是正常的,这就可以排除这些问题了啊。但是我还是检查了一遍路径,发现,我的workspace路径下有空格我想肯定是这个问题了,于是将空格改为下划线,呵呵,文件加载不进来了,这下我想到的是改workspace,这个在file-->Switch WorkSpace-->Other,然后选择修改后的路径就ok了。
下面是我修改后的写入xml的java代码:
package hnist.com.xml01;import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class xmlWrite {public static void main(String args[]){XMLWriter out = null;try {//先创建一个的document对象Document d = DocumentHelper.createDocument();//为d添加节点,并返回该节点Element root = d.addElement("users");//为根节点添加节点,并且返回添加的节点Element eu = root.addElement("user");//添加属性eu.addAttribute("id", "1");//添加其它节点eu.addElement("name").addText("张三");eu.addElement("sex").addText("男");eu.addElement("age").addText("20");eu = root.addElement("user");eu.addAttribute("id", "2");eu.addElement("name").addText("李四");eu.addElement("sex").addText("女");eu.addElement("age").addText("19");eu = root.addElement("user");eu.addAttribute("id", "3");eu.addElement("name").addText("王五");eu.addElement("sex").addText("男");eu.addElement("age").addText("22");//获取xml文件所在的路径String path = xmlWrite.class.getClassLoader().getResource("xml/user.xml").getPath();//项目中不用替换path = path.replace("bin", "src");System.out.println(path);//创建xmlWriter来写数据out = new XMLWriter(new FileWriter(path), OutputFormat.createPrettyPrint());//将节点写入到xml文件中out.write(d);System.out.println("写入成功!");} catch (Exception ex) {ex.printStackTrace();} finally {try {if(out != null) out.close();} catch (IOException e) {e.printStackTrace();}}}}
运行结果为:
/home/long/Workspaces/MyEclipse_Professional_2014/xml01/src/xml/user.xml
写入成功!
user.xml中为:
<?xml version="1.0" encoding="UTF-8"?><users> <user id="1"> <name>张三</name> <sex>男</sex> <age>20</age> </user> <user id="2"> <name>李四</name> <sex>女</sex> <age>19</age> </user> <user id="3"> <name>王五</name> <sex>男</sex> <age>22</age> </user></users>
读取user.xml的java代码:
package hnist.com.xml01;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class xmlXpath {public static void main(String args[]){SAXReader reader = new SAXReader();try {String path = xml01.class.getClassLoader().getResource("xml/user.xml").getPath();System.out.println("path = "+path);Document d = reader.read(path);Element root = d.getRootElement();//相对路径查找List<Element> eles = root.selectNodes("user");System.out.println(eles);//绝对路径查找,从根节点users查找user,而不会查找user下的节点eles = root.selectNodes("/users/user");System.out.println("包含节点个数:"+eles.size()+" : "+eles);//查找所有性别为男的姓名System.out.println("----------------------------------");eles = root.selectNodes("/users/user[sex='男']");for(Element e:eles){System.out.println("性别为男:"+e.elementText("name"));}System.out.println("----------------------------------");//查找age<=20的姓名eles = root.selectNodes("/users/user[@id<=2]");for(Element e:eles){System.out.println("id<=2 :"+e.elementText("name"));}System.out.println("----------------------------------");//查找名称中包含有'张'的age节点eles = root.selectNodes("/users/user[contains(name,'张')]/age");for(Element e:eles){System.out.println("名称中包含有'张'的age节点:"+e.getTextTrim());}System.out.println("----------------------------------");//查找age<=20并且sex='女'的nameeles = root.selectNodes("/users/user[age<=20 and sex='女']/name");for(Element e:eles){System.out.println("age<=20并且sex='女'的name :"+e.getTextTrim());}}catch(Exception ex){ex.printStackTrace();}}}
运行结果为:
path = /home/long/Workspaces/MyEclipse_Professional_2014/xml01/bin/xml/user.xml
[org.dom4j.tree.DefaultElement@1a8cacd [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@9a7754 [Attribute: name id value "1"]]/>], org.dom4j.tree.DefaultElement@1105002 [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@1f4d7c0 [Attribute: name id value "2"]]/>], org.dom4j.tree.DefaultElement@180bfe1 [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@1b55efc [Attribute: name id value "3"]]/>]]
包含节点个数:3 : [org.dom4j.tree.DefaultElement@1a8cacd [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@9a7754 [Attribute: name id value "1"]]/>], org.dom4j.tree.DefaultElement@1105002 [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@1f4d7c0 [Attribute: name id value "2"]]/>], org.dom4j.tree.DefaultElement@180bfe1 [Element: <user attributes: [org.dom4j.tree.DefaultAttribute@1b55efc [Attribute: name id value "3"]]/>]]
----------------------------------
性别为男:张三
性别为男:王五
----------------------------------
id<=2 :张三
id<=2 :李四
----------------------------------
名称中包含有'张'的age节点:20
----------------------------------
age<=20并且sex='女'的name :李四
- linux下用dom4j写入xml时 报错java.io.FileNotFoundException..(没有那个文件或目录
- Linux下GCC编译,报错没有头文件<io.h>那个文件或目录
- linux 安装redis时 报错jemalloc/jemalloc.h:没有那个文件或目录
- linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录”
- python报错: Python.h: 没有那个文件或目录
- pip方式下安装CAFFE的python接口,报错提示没有那个文件或目录
- Deepin下python安装uwsgi报错: Python.h:没有那个文件或目录
- linux执行shell报错:...^M: bad interpreter: 没有那个文件或目录
- linux安装scrapy报错 Python.h: 没有那个文件或目录
- 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
- 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
- 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题
- linux下用gcc编译c程序时遇到的问题: error: stdio.h: 没有那个文件或目录
- linux下报错没有头文件<io.h>那个文件或目录
- hadoop初始化报错/lib/ld-linux.so.2:bad ELF interpreter: 没有那个文件或目录
- 64bit linux下执行arm-linux-gcc: 没有那个文件或目录
- 安装scrapy报错 Python.h: 没有那个文件或目录
- 安装scrapy报错 Python.h: 没有那个文件或目录
- 双机脑裂(split-brain)解决办法
- Android——高级界面组件
- Maven 打包 jar 、war 文件时,不将 pom.xml 等打包进包中
- read only status pyCharm
- Pascal's Triangle II
- linux下用dom4j写入xml时 报错java.io.FileNotFoundException..(没有那个文件或目录
- 题目1387:斐波那契数列
- 9个完整android开源app项目
- 优化数据页面(2)——用背景色突出标题行
- form表单 to Json
- 【Android开发经验】APP的缓存文件到底应该存在哪?看完这篇文章你应该就自己清楚了
- 各种类型与零比较
- Android简单的JSON解析(二)
- linux利用test命令的测试功能