Запись XML-файла на Android после добавления

1

Мне нужно написать XML файл в android и заменить его на новый. Код работает нормально, но ничего не изменилось в файле 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
    Если вы сделаете отступ в коде, люди будут более способны и готовы вам помочь.
  • 0
    Вы инициализируете, очищаете и закрываете 'osw', но никогда ничего не пишете в него.
Показать ещё 1 комментарий
Теги:

1 ответ

1

У меня возникли проблемы с написанием документов DOM, и это поставило меня на правильный путь. Из вашего кода мне пришлось привязать OutputStreamWriter к StreamResult.

После создания экземпляра:

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

вызовите следующее:

result.setWriter(osw);

перед выполнением преобразования. Это сработало для меня.

  • 0
    Не только это решение решило эту проблему, но и десяток других ошибок! Спасибо, dbennett63!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню