Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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
Java将具有属性的元素添加到xml文件_Java_Xml_File_Fullcalendar - Fatal编程技术网

Java将具有属性的元素添加到xml文件

Java将具有属性的元素添加到xml文件,java,xml,file,fullcalendar,Java,Xml,File,Fullcalendar,各位程序员您好:) 我对Java非常陌生,如果这是PHP,我已经这样做了:p,无论如何,我试图在这里搜索所有答案(stackoverflow),但没有一个适合我的具体问题,或者我没有看到一个例子,或者我错过了一些东西……无论如何,如果你知道任何类似于我的问题的解决方案,请发布答案的链接 对问题没问题;) 我在一个文件中有这个XML,我需要它像这样: <?xml version="1.0" encoding="UTF-8"?> <events> <event

各位程序员您好:)

我对Java非常陌生,如果这是PHP,我已经这样做了:p,无论如何,我试图在这里搜索所有答案(stackoverflow),但没有一个适合我的具体问题,或者我没有看到一个例子,或者我错过了一些东西……无论如何,如果你知道任何类似于我的问题的解决方案,请发布答案的链接

对问题没问题;)

我在一个文件中有这个XML,我需要它像这样:

<?xml version="1.0" encoding="UTF-8"?>
<events>
    <event id="46" title="Ferias" start="2013-04-25" end="2013-04-26" allDay="false" editable="true"/>
    <event id="47" title="Falta" start="Wed Apr 17 2013 00:00:00 GMT+0100" end="Thu Apr 18 2013 00:00:00 GMT+0100" allDay="false" editable="true"/>
    <event id="48" title="Tolerancia de Ponto" start="Mon Apr 01 2013 00:00:00 GMT+0100" end="" allDay="false" editable="true"/>    
    <event id="49" title="Titulo teste" start="Thu Apr 11 2013 00:00:00 GMT+0100" end="Sat Apr 13 2013 00:00:00 GMT+0100" allDay="true" editable="true"/>
    <event id="50" title="dfgfdgf" start="Fri Apr 12 2013 00:00:00 GMT+0100" end="Sat Apr 13 2013 00:00:00 GMT+0100" allDay="true" editable="true"/>
    <event id="51" title="hghfjfghj" start="Tue Apr 16 2013 00:00:00 GMT+0100" end="Wed Apr 17 2013 00:00:00 GMT+0100" allDay="true" editable="true"/>
    <event id="52" title="grande evento" start="Tue Apr 23 2013 00:00:00 GMT+0100" end="Wed May 01 2013 00:00:00 GMT+0100" allDay="true" editable="true"/>
</events>
这里没问题

其中openXMLfile是:

protected Document openXMLfile(String filepath){
    Document doc = null;
    try {
        File fXmlFile = new File(filepath);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        doc = dBuilder.parse(fXmlFile);         
    } catch (Exception e) {
        e.printStackTrace();
    }
    return doc;
}
然后在添加元素的函数中,我执行以下操作:

File file = new File("D:\myxml.xml");
Element event = doc.createElement("event");
    event.setAttribute("test","testvalue");
    doc.getDocumentElement().appendChild(event);

    filePutContents(doc,file);
其中filePutContents具有以下功能:

protected void filePutContents(Document doc,File file){
    try{                    
        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer();    
        transformer.setOutputProperty(OutputKeys.INDENT,"yes");

        DOMSource source = new DOMSource(doc);
        //StreamResult result = new StreamResult(System.out);//problem was this
        StreamResult result = new StreamResult(file);//correct way
                transformer.transform(source, result);

    }catch(TransformerConfigurationException tce){
        /*ERRO do Transformer*/         
        System.out.println("* Transformer Factory error");
        System.out.println(" " + tce.getMessage());

        Throwable x = tce;
        if (tce.getException() != null)
            x = tce.getException();
            x.printStackTrace(); 
    }catch(TransformerException te){
        /*ERRO da Factory*/
        System.out.println("* Transformation error");
        System.out.println(" " + te.getMessage());

        Throwable x = te;
        if (te.getException() != null)
            x = te.getException();
            x.printStackTrace();
    }
}
问题是,没有向文件添加任何元素,我希望更新文件,我做错了什么?多谢各位

问题解决了,我已经在代码中反映了更改;)感谢您的帮助:)

上面的语句将您的输出定向到控制台(System.out)。如果要更新文件,请将其指向该文件

试试这个-

StreamResult result = new StreamResult(new FileOutputStream("somefile.xml"));
上面的语句将您的输出定向到控制台(System.out)。如果要更新文件,请将其指向该文件

试试这个-

StreamResult result = new StreamResult(new FileOutputStream("somefile.xml"));

我尝试过:File File=新文件(filepath);StreamResult=新的StreamResult(文件);并且StreamResult=newstreamresult(newfileoutputstream(file));顺便说一句,这一定是在尝试捕获无效:(好吧,就是这样,我做错了:StreamResult结果=新StreamResult(文件);工作正常,谢谢;)我尝试过:file file=新文件(文件路径);StreamResult=新的StreamResult(文件);并且StreamResult=newstreamresult(newfileoutputstream(file));顺便说一句,这一定是在try-catch中没有起作用:(好吧,就是这样,我做错了:StreamResult=newstreamresult(文件);工作正常,谢谢;)
StreamResult result = new StreamResult(new FileOutputStream("somefile.xml"));