2015-02-08 119 views
0

我想將xml節點添加到資產文件夾中存在的現有xml文件favorites.xml中。如何從android資產文件夾的xml文件創建FileOutputStream?

下面是code.It拋出FileNotFoundException異常而行

FileOutputStream fos = new FileOutputStream(myContext.getAssets().openFd("favorites.xml").getFileDescriptor()); 

請幫我解決創建FileOutputStream中。提前謝謝。

代碼:

import android.content.Context; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.xml.sax.SAXException; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 


public class XMLWriter{ 

private Context myContext; 
public XMLWriter(Context context) 
{ 
    myContext = context; 
} 

public void AddFavorites(int id) 
{ 
    try 
    { 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 

     Document document = documentBuilder.parse(myContext.getAssets().open("favorites.xml")); 
     Node node = document.getElementsByTagName("favorites").item(0); 

     Element favorite = document.createElement("favorite"); 
     Element idElement = document.createElement("id"); 
     idElement.appendChild(document.createTextNode(Integer.toString(id))); 
     favorite.appendChild(idElement); 
     node.appendChild(favorite); 

     DOMSource source = new DOMSource(document); 
     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 

     FileOutputStream fos = new FileOutputStream(myContext.getAssets().openFd("favorites.xml").getFileDescriptor()); 
     StreamResult result = new StreamResult(fos); 
     transformer.transform(source, result); 

    } catch (ParserConfigurationException | SAXException | IOException | TransformerException e) { 
     e.printStackTrace(); 
    } 
} 

}

回答

0

你不能改變資產的文件夾中。它們是隻讀的。

+0

感謝您的幫助。 – Lucky 2016-12-12 16:51:30