Изменить значение href в Android на локальное с помощью JSoup - PullRequest
0 голосов
/ 23 ноября 2018

Как я могу изменить значение href в HTML-коде какой-либо страницы, хранящейся локально в Android?

 private void changeHrefsToLocal(String pageName) throws IOException {

    File input = new File(appContext.getFilesDir(), pageName);
    Document savedDoc = Jsoup.parse(input, "UTF-8");
    Elements links = savedDoc.select("a[href]");

    String href;

    for(Element link : links){

                href = appContext.getFilesDir() + "/" + link.attr("abs:href").replace(INDEX_URL, "") + ".html";
                link.attr("href",  href);

            }
    }

Журналы:

11-23 18:40:33.837 10380-10397/com.pokropek.ernest.protectedofflinewebviewer E/testing: <a href="http://test.pl/kontakt">Kontakt</a>

11-23 18:40:33.837 10380-10397/com.pokropek.ernest.protectedofflinewebviewer E/testing: <a href="/data/data/com.pokropek.ernest.protectedofflinewebviewer/files/kontakt.html">Kontakt</a>

Если я распечатаю ссылку на журналыдо и после запуска метода есть ожидаемое изменение, хотя в локальном .html-файле нет изменений *1008*, что является основной проблемой.

1 Ответ

0 голосов
/ 04 января 2019

Просто сохраните отредактированный файл html обратно.

Вот пример кода

    File input = new File(appContext.getFilesDir(), pageName);
    Document savedDoc = null;
    try {
        savedDoc = Jsoup.parse(input, "UTF-8");
    } catch (Exception e) {
        Log.e("Error ",  e.toString());
    }

    Elements links = savedDoc.select("a[href]");

    for(Element link : links){
        link.attr("href", "changed value");//change the value of href attribute here
    }

    //save the updated/edited html file
    PrintWriter writer;
    try {
        writer = new PrintWriter(input,"UTF-8");
        writer.write(savedDoc.html() ) ;
        writer.flush();
        writer.close();
    } catch (Exception e) {
        Log.e("Error ", e.toString());
    }
...