用MyEclipse开发时,我将xml文件放到src目录下,那么myeclipse会自动将其放到classes目录下也就是类路径下,现在我想修改xml文件中的内容:
这是我修改的代码public class ModifyXML{
public static void main(String[] args)
throws IOException,FileNotFoundException,JDOMException{
//SAXBuilder使用一个第三方的SAX解析器,可以从不同的输入源来构造JDOM文档对象
SAXBuilder builder=new SAXBuilder();
Resource resource=new ClassPathResource("sample.xml");
File file=resource.getFile();
// File file=ResourceUtils.getFile("classpath:sample.xml");
// File file=new File("E:\\SSH\\zuwoba\\sample.xml");
Document doc=builder.build(file);
//getRootElement()用于返回文档的根元素.
Element element=doc.getRootElement();
//Element类中定义了获取子元素的方法,得到所有子元素
List list=element.getChildren();
//iterator()方法返回以正确顺序在列表的元素上进行迭代的迭代器
//hasNext()方法判断如果仍有元素可以迭代,则返回 true
for(Iterator i=list.iterator();i.hasNext();){
//next()方法返回迭代的下一个元素。重复调用此方法直到hasNext()方法返回 false,
//这将精确地一次性返回迭代器指向的集合中的所有元素
Element current=(Element)i.next();
//判断姓名子元素的值是否为张三
if(current.getChildText("姓名").equals("张三")){
//删除年龄子元素
current.removeChild("年龄");
//创建年龄子元素
Element age=new Element("年龄");
//设置年龄子元素的值
age.setText("23");
//将年龄子元素添加到父元素中
current.addContent(age);
}
//判断姓名子元素的值是否为李四
if(current.getChildText("姓名").equals("李四")){
//删除年龄子元素
current.removeChild("年龄");
//创建年龄子元素
Element age=new Element("年龄");
//设置年龄子元素的值
age.setText("25");
//将年龄子元素添加到父元素中
current.addContent(age);
}
}
Format format=Format.getCompactFormat();
//设置文档字符编码
format.setEncoding("GB18030");
//设置缩进字符串
format.setIndent(" ");
//XMLOutputter类提供了将JDOM树输出为字节流的能力
XMLOutputter XMLOut=new XMLOutputter(format);
//输出到文件
XMLOut.output(doc,new FileOutputStream(file));
System.out.println("执行成功");
}}
这样只有将file定义成这样
File file=new File("E:\\SSH\\zuwoba\\sample.xml");
才会修改成功,也就是此时xml文件时在外部的,如果我把xml文件放到类路径下,用Spring的工具类获取xml文件,再执行修改,虽然提示修改成功,但是文件中的内容一点没改
Resource resource=new ClassPathResource("sample.xml");
File file=resource.getFile();
// File file=ResourceUtils.getFile("classpath:sample.xml");
这是为什么?
这是我修改的代码public class ModifyXML{
public static void main(String[] args)
throws IOException,FileNotFoundException,JDOMException{
//SAXBuilder使用一个第三方的SAX解析器,可以从不同的输入源来构造JDOM文档对象
SAXBuilder builder=new SAXBuilder();
Resource resource=new ClassPathResource("sample.xml");
File file=resource.getFile();
// File file=ResourceUtils.getFile("classpath:sample.xml");
// File file=new File("E:\\SSH\\zuwoba\\sample.xml");
Document doc=builder.build(file);
//getRootElement()用于返回文档的根元素.
Element element=doc.getRootElement();
//Element类中定义了获取子元素的方法,得到所有子元素
List list=element.getChildren();
//iterator()方法返回以正确顺序在列表的元素上进行迭代的迭代器
//hasNext()方法判断如果仍有元素可以迭代,则返回 true
for(Iterator i=list.iterator();i.hasNext();){
//next()方法返回迭代的下一个元素。重复调用此方法直到hasNext()方法返回 false,
//这将精确地一次性返回迭代器指向的集合中的所有元素
Element current=(Element)i.next();
//判断姓名子元素的值是否为张三
if(current.getChildText("姓名").equals("张三")){
//删除年龄子元素
current.removeChild("年龄");
//创建年龄子元素
Element age=new Element("年龄");
//设置年龄子元素的值
age.setText("23");
//将年龄子元素添加到父元素中
current.addContent(age);
}
//判断姓名子元素的值是否为李四
if(current.getChildText("姓名").equals("李四")){
//删除年龄子元素
current.removeChild("年龄");
//创建年龄子元素
Element age=new Element("年龄");
//设置年龄子元素的值
age.setText("25");
//将年龄子元素添加到父元素中
current.addContent(age);
}
}
Format format=Format.getCompactFormat();
//设置文档字符编码
format.setEncoding("GB18030");
//设置缩进字符串
format.setIndent(" ");
//XMLOutputter类提供了将JDOM树输出为字节流的能力
XMLOutputter XMLOut=new XMLOutputter(format);
//输出到文件
XMLOut.output(doc,new FileOutputStream(file));
System.out.println("执行成功");
}}
这样只有将file定义成这样
File file=new File("E:\\SSH\\zuwoba\\sample.xml");
才会修改成功,也就是此时xml文件时在外部的,如果我把xml文件放到类路径下,用Spring的工具类获取xml文件,再执行修改,虽然提示修改成功,但是文件中的内容一点没改
Resource resource=new ClassPathResource("sample.xml");
File file=resource.getFile();
// File file=ResourceUtils.getFile("classpath:sample.xml");
这是为什么?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货