Альтернатива метода Jsoup.parse ()

Я использую Jsoup.parse() для анализа этих данных . Все работает хорошо, но занимает много времени.

Например, эти данные занимают 20 секунд. Для синтаксического анализа. Существуют ли другие решения для моих нужд?

Код:

 rezult = Jsoup.parse(res.parse().outerHtml(), "UTF-8").text(); 

Где res это текст из ссылки .

=========== ОБНОВЛЕНИЕ =============

Я Jsoup.parse() эту переменную от Jsoup.parse() и понял, что это источник проблемы. Это занимает 20 секунд, а не Jsoup.parse() .

 String tmp = res.parse().outerHtml(); 

И это занимает всего 1 секунду .:

 rezult = Jsoup.parse(tmp, "UTF-8").text(); 

Я использую этот код для получения данных по этой ссылке. Я использую Jsoup.parse() потому что без него у меня есть что-то вроде этого:

 <html> <head></head> <body> {&quot;success&quot;:true,&quot;currentUser&quot;:43743,&quot;careTypes&quot;:[{&quot;id&quot;:1,&quot;name&quot;:&quot;\u0421\u0442\u0438\u0440\u043a\u0430&quot;,&quot;description&quot;:&quot;\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u0440\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0436\u0438\u043c.&quot;},{&quot;id&quot;:2,&quot;name&quot;:&quot;\u041e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u0435&quot;,&quot;description&quot;:&quot;\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 

Вместо этого:

 {"success":true,"currentUser":43743,"careTypes":[{"id":1,"name":"\u0421\u0442\u0438\u0440\u043a\u0430","description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u0442\u0438\u0440\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0436\u0438\u043c."},{"id":2,"name":"\u041e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u0435","description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0442\u0431\u0435\u043b\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435 

Но теперь основная проблема заключается в том, чтобы изменить res.parse() на что-то другое с меньшим временем выполнения.

=========== ОБНОВЛЕНИЕ 2 =============

  long t2 = System.currentTimeMillis(); try { Connection connection = Jsoup.connect(url) .method(Connection.Method.POST) .cookies(cookies) .timeout(30000) .ignoreContentType(true); if (data != null) { connection.data(data); } res = connection.execute(); Logger.d(System.currentTimeMillis() - t2 + " = connection.execute"); long t6 = System.currentTimeMillis(); String tmp = res.parse().outerHtml(); Logger.d(System.currentTimeMillis() - t6 + " = res.parse().outerHtml()"); long t4 = System.currentTimeMillis(); rezult = Jsoup.parse(tmp, "UTF-8").text(); Logger.d(System.currentTimeMillis() - t4 + " = Jsoup.parse"); 

И что я получил в Logcat:

 1588 = connection.execute 16150 = res.parse().outerHtml() 1466 = Jsoup.parse 

Используйте eval() . Кроме того, убедитесь, что источник eval() является безопасным. eval() попытается оценить любой оператор и, следовательно, потенциально может выявить проблемы с безопасностью, не используется должным образом

Я нашел решение этой проблемы.

В Jsoup lib есть другой способ получить содержимое страницы без разбора.

Решением является изменение этой строки:

 String tmp = res.parse().outerHtml(); 

На этой строке:

 String tmp = res.body(); 

Это происходит быстрее в 20 раз. Может быть, они выполняют разные работы, но в моих потребностях это одно и то же.