2011-01-04 19 views
1

XMLファイルをアンドロイドに書き込んで、新しいものに置き換える必要があります。コードは正常に動作していますが、私が持っているXMLファイルで何も変わっていません。XMLファイルを追加した後にアンドロイドに書き込む

try{ 

FileOutputStream fOut = openFileOutput("/data/data/test.fileshow/files/Landmarks.xml", MODE_WORLD_READABLE); 

OutputStreamWriter osw = new OutputStreamWriter(fOut); 
String filepath = "Landmarks.xml"; 

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
    Document doc = docBuilder.parse(filepath); 
    Element Row, Longitude, Latitude, Title, Category, Rating; 

      Node staff = doc.getElementsByTagName("Root").item(0); 

     Row=doc.createElement("Row"); 
     Longitude=doc.createElement("Longitude"); 
     Longitude.appendChild(doc.createTextNode("555")); 
     Row.appendChild(Longitude); 
     Latitude=doc.createElement("Latitude"); 
     Latitude.appendChild(doc.createTextNode("ABCCamera")); 
     Row.appendChild(Latitude); 
     Title=doc.createElement("Title"); 
     Title.appendChild(doc.createTextNode("title")); 
     Row.appendChild(Title); 
     Category=doc.createElement("Category"); 
     Category.appendChild(doc.createTextNode("category")); 
     Row.appendChild(Category); 
     Rating=doc.createElement("Rating"); 
     Rating.appendChild(doc.createTextNode("rating")); 
     Row.appendChild(Rating); 
     staff.appendChild(Row); 


     //write the content into xml file 
     TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
     Transformer transformer = transformerFactory.newTransformer(); 
     DOMSource source = new DOMSource(doc); 
     StreamResult result = new StreamResult(new File(filepath)); 
     transformer.transform(source, result); 

     osw.flush(); 
     osw.close(); 

     }catch(ParserConfigurationException pce){ 
    pce.printStackTrace(); 
     }catch(TransformerException tfe){ 
    tfe.printStackTrace(); 
     }catch(IOException ioe){ 
    ioe.printStackTrace(); 
     }catch(SAXException sae){ 
    sae.printStackTrace(); 
     } 
+0

コードをインデントすると、人々はより多くのことができるようになります。 – Thanatos

+0

'osw'を初期化し、フラッシュして閉じますが、実際に何も書き込むことはありません。 –

+0

私はosw.write()を試しましたが、結果を得る方法がわかりません。アンドロイドでファイルに結果を書き出す方法を私に教える人が必要でした。コードビューを編集していただきありがとうございますthanathos =) – Cid

答えて

1

DOMドキュメントを作成する際に問題が発生し、正しいパスに設定されました。あなたのコードから、OutputStreamWriterをStreamResultにバインドする必要がありました。

あなたがインスタンス化した後:

StreamResult result = new StreamResult(new File(filepath)); 

コール以下:

result.setWriter(osw); 

変換を実行する前に。これは私のために働いた。

+0

この解決策だけでなく、他のバグも修正しました!ありがとう、dbennett63! – Kongress

関連する問題