将节点附加到Java中的xml

时间:2013-04-02 21:07:19

标签: java xml servlets append

我无法正确地将一些信息附加到我的xml文件中。那是抄写员的功能

    public String scrivi (Document doc, File dest)
   {
     try
     {

        DOMSource sorgente = new DOMSource (doc);
        StreamResult sr = new StreamResult (dest);        
        TransformerFactory tf =
            TransformerFactory.newInstance();
        Transformer transf = tf.newTransformer();
        transf.transform (sorgente, sr);
        return "Tutto ok";
     }
     catch (TransformerConfigurationException tce)
     {

        System.out.println(tce.getMessage());
        return  "<h1> Config </h1>";
     }
     catch (TransformerException te)
     {

        System.out.println(te.getMessage());
        return "<h1> Transformer Errore </h1>";
     }
   }

和tath是我的代码:

 try {
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                Document document = db.parse(getClass().getResourceAsStream("/azioni.xml"));


            Element root = document.getDocumentElement(); 
            Element new_azione = document.createElement("azione");
            Element id = document.createElement("id_azione");
            id.setTextContent(id_azione);
            Element nome = document.createElement("nome_azione");
            nome.setTextContent(nome_azione);
            Element prezzo_a = document.createElement("prezzo");
            prezzo_a.setTextContent(prezzo);
            new_azione.appendChild(id);
            new_azione.appendChild(nome);
            new_azione.appendChild(prezzo_a);
            document.getDocumentElement().appendChild(new_azione);



            String nomexmlOut="/azioni.xml";



            File filedest = new File(nomexmlOut); 


            out.println(this.scrivi(document, filedest));

}

我收到错误Transformer Errore ...我该如何解决?怎么了? *更新* 错误信息

java.io.FileNotFoundException: /azioni.xml (Permission denied)

1 个答案:

答案 0 :(得分:2)

很难说没有实际的异常跟踪或消息,但我的猜测是你的问题是输出流。

File("/azioni.xml");

不同
getClass().getResourceAsStream("/azioni.xml")

尝试将输出定向到系统,看看它是否有效。即宣布抄写

public String scrivi (Document doc, OutputStream out)

并用

调用它
scrivi(document, System.out);

更新:

要写入同一文件位置,请尝试以下内容(未经测试)

File out = new File(getClasss()。getResource(“...”)。getFile());

并确保在尝试写入之前关闭最初读取的输入流。