Добавление новых данных в файл XML

У меня есть приложение для Android, в которое пользователь может вводить данные и сохранять их в виде XML-файла на устройстве. Я пытался использовать разные библиотеки для записи данных в файл xml, но мне было трудно их использовать. Поэтому я сделал свой собственный метод, который проходит в LinkedHashMap с ключами, являющимися тегами xml. Он отлично работает, но когда пользователь возвращается в приложение и сохраняет новые данные, я хочу, чтобы он был добавлен в файл xml. Моя проблема в том, что я не могу удалить закрывающий тег в файле xml, чтобы добавить новые данные. Ниже приведен метод создания файла xml. Любая помощь горячо приветствуется.

public static void createxml(LinkedHashMap<String, String> map, String root) {

    String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
    StringBuilder sb = null;

    sb = new StringBuilder(s);
    sb.append("<");
    sb.append(root);

    sb.append(">");

    if (fileExists = false) {
        sb = new StringBuilder("<Soparc>");

    }

    for (String key : map.keySet()) {
        sb.append("<");
        sb.append(key);
        sb.append(">");

        sb.append(map.get(key));

        sb.append("</");
        sb.append(key);
        sb.append(">");
    }

    sb.append("</");
    sb.append(root);
    sb.append(">");

    String st = sb.toString();
    try {

        BufferedWriter output = new BufferedWriter(new FileWriter(dataFile,
                true));
        output.write(st);
        output.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

person user3156801    schedule 27.08.2014    source источник


Ответы (1)


  1. Простой совет: не забудьте экранировать специальные символы xml. Для этого вы можете использовать что-то вроде метода org.apache.commons.lang3.StringEscapeUtils.escapeXml(...).

  2. Отвечая на прямой вопрос: к сожалению, если вы хотите сделать это осторожно, вам нужно разобрать вашу предыдущую структуру xml в некоторую DOM (объектную модель документа), обновить ее новыми данными пользователя и снова записать в xml .

person Andremoniy    schedule 27.08.2014