Java / Android - чтение, управление и сохранение файлов XML во внутреннем хранилище

Я разрабатываю приложение для Android, которое будет использовать файловую систему, в которой данные будут храниться в xml -файлах.

Я успешно читаю соответствующий файл и изменяю узлы (изменяются значения - при просмотре в отладчике), но в мой локально сохраненный файл не вносятся изменения.

Процесс: 1. Чтение / открытие локального файла // выполнено 2. Изменить DOM NODE // выполнено 3. Сохранить изменения в моем локальном файле <- не удалось

До сих пор я знаю, что мне придется использовать TransformerFactory после того, как я буду следовать некоторым Учебникам и другим фрагментам кода, изменения все еще не сохранены в моем файле.

Может кто-нибудь сказать мне, что я делаю не так?

Мой код:

try {
        File path = a.getFilesDir();
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

        Document doc = docBuilder.parse(path.getPath() + "/" + FILENAME_PERMISSIONS);

        NodeList myCourses = doc.getElementsByTagName(NODE_COURSE);

        for (int i = 0; i < myCourses.getLength(); i++) {
            Node course = myCourses.item(i);
            Element e = (Element)myCourses.item(i);

            Node myPermission = course.getFirstChild();
            String name = e.getAttribute(ATTR_NAME);

            switch (name){
                case FLAG_CrossCult:
                    myPermission.setTextContent(boolToString(crossCult));
                    break;

                case FLAG_KAIROS:
                    myPermission.setTextContent(boolToString(kairos));

                    break;

                case FLAG_UnfinStory:
                    myPermission.setTextContent(boolToString(unfinStory));

                    break;

                case FLAG_EmpToInf:
                    myPermission.setTextContent(boolToString(empToInf));

                    break;

                case FLAG_YouthKairos:
                    myPermission.setTextContent(boolToString(youthKairos));

                    break;
            }

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

            StreamResult streamResult = new StreamResult(new File(path.getPath() + "/" + FILENAME_PERMISSIONS));
            transformer.transform(source,streamResult);





        }


    }
    catch (ParserConfigurationException e){

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

1 ответ

Решение

Я нашел проблему...

Кодекс был почти правильным. Необходимо внести 2 изменения:

1: нужно использовать "новый файл ()"

String myPath = path.getPath() + "/" + FILENAME_PERMISSIONS;
Document doc = docBuilder.parse(new File(myPath));

2: я писал не на тот узел

//Node myPermission = course.getFirstChild();
//is now:

NodeList permissionList = e.getElementsByTagName(NODE_PERMISSION);
Node myPermission = permissionList.item(0);

Я оставлю вопрос здесь, если кто-то должен сделать то же самое..

Другие вопросы по тегам