Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么IDE和console在Java中对xml文件执行不同的操作?_Java_Xml_File_Domparser - Fatal编程技术网

为什么IDE和console在Java中对xml文件执行不同的操作?

为什么IDE和console在Java中对xml文件执行不同的操作?,java,xml,file,domparser,Java,Xml,File,Domparser,我是XML文件操作的新手。我的程序在执行时应该这样做,它必须生成随机数并写入XML文件。每次我在NetBeans IDE中调试它时,一切都正常,但当我尝试在控制台中使用“Java-jar blabla.jar”执行它时,XML文件并没有改变,我仍然可以在XML文件中看到旧值。为什么会这样?为什么IDE可以修改XML中的值,而console不能 以下是我的XML操作代码块: public class CreateXML { public CreateXML(ArrayList<Intege

我是XML文件操作的新手。我的程序在执行时应该这样做,它必须生成随机数并写入XML文件。每次我在NetBeans IDE中调试它时,一切都正常,但当我尝试在控制台中使用“Java-jar blabla.jar”执行它时,XML文件并没有改变,我仍然可以在XML文件中看到旧值。为什么会这样?为什么IDE可以修改XML中的值,而console不能

以下是我的XML操作代码块:

public class CreateXML {

public CreateXML(ArrayList<Integer> array,String name){
    try{
    DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
    DocumentBuilder db=dbf.newDocumentBuilder();

    String path="file"+name+".xml";
    File xmlfile=new File(path);
    if(xmlfile.exists()){
        xmlfile.delete();
        System.out.println("There was this file and it is deleted.");
    }

    Document doc=db.newDocument();

    Element rootElement=doc.createElement("numberList");
    doc.appendChild(rootElement);
        for (int i = 0; i < array.size(); i++) {
            Element staff=doc.createElement("number");
            rootElement.appendChild(staff);

            Attr attr=doc.createAttribute("id");
            attr.setValue(Integer.toString(i));
            staff.setAttributeNode(attr);
            staff.setTextContent(Integer.toString(array.get(i)));
        }

    TransformerFactory tf=TransformerFactory.newInstance();
    Transformer t=tf.newTransformer();

    DOMSource source=new DOMSource(doc);
    StreamResult result=new StreamResult(xmlfile);

    t.transform(source, result);
    }catch(Exception e){
        e.printStackTrace();
        }
    }

}
public类CreateXML{
公共CreateXML(ArrayList数组,字符串名称){
试一试{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
String path=“文件”+name+“.xml”;
文件xmlfile=新文件(路径);
if(xmlfile.exists()){
xmlfile.delete();
System.out.println(“有这个文件,它被删除了”);
}
Document doc=db.newDocument();
元素rootElement=doc.createElement(“numberList”);
doc.appendChild(rootElement);
对于(int i=0;i
创建的文件可能不在您认为的位置,请尝试打印
xmlfile.getAbsolutePath()
如果从IDE和jar运行代码,您确定运行的代码版本相同吗?@Berger我认为这不是问题所在,因为IDE可以找到该文件,但.jar文件无法找到。所以,我的意思是,如果路径不正确,IDE也无法找到该文件,对吗?@Jens是的,我确信版本是相同的。因为我在尝试从控制台执行之前单击了“清理并构建项目”按钮。
xmlfile.getAbsolutePath()
只是为了证明路径不同。您可以使用绝对路径创建文件,例如
file xmlfile=new file(“C:\\\\temp\\\\\\+“file”+name+.xml”)
创建的文件可能不在您认为的位置,请尝试打印
xmlfile.getAbsolutePath()
如果您从IDE和jar运行代码,您确定您运行的代码版本相同吗?@Berger我认为这不是问题所在,因为IDE可以找到该文件,但.jar文件无法找到。所以,我的意思是,如果路径不正确,IDE也无法找到该文件,对吗?@Jens是的,我确信版本是相同的。因为我在尝试从控制台执行之前单击了“清理并构建项目”按钮。
xmlfile.getAbsolutePath()
只是为了证明路径不同。您可以使用绝对路径创建文件,例如
file xmlfile=new file(“C:\\\\temp\\\\\\+“file”+name+.xml”)