#java #android
#java #Android
Вопрос:
Я получаю текст из http://m.wol.jw.org/en/wol/dt/r1/lp-e/2014/6/26 через jsoup в моем приложении для Android. Это выглядит так:
public static void refreshFromNetwork(Context context) {
Document document;
Elements dateElement;
Elements textElement;
Elements commentElement;
try {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
sDayURL = sURL "/" year "/" month "/" day;
document = Jsoup.connect(sDayURL).get();
if (document.hasText()) {
dateElement = document.select(".ss");
textElement = document.select(".sa");
commentElement = document.select(".sb");
sDate = dateElement.text();
sText = textElement.text();
sComment = commentElement.html();
sSavedForCheckingDate = sLocalDate;
savePrefs(context);
sDayURL = null;
} else {
Toast.makeText(mContext,
mContext.getString(R.string.warning_unstable_connection),
Toast.LENGTH_SHORT).show();
}
} catch (IOException e) {
System.out.println("error");
e.printStackTrace();
}
}
Но в тексте есть несколько href. Когда курсор находится на них, появляется текстовый фрейм.
Я не могу публиковать изображения, поэтому посмотрите его там: http://habrastorage.org/files/45e/b09/17f/45eb0917f3644bbd9e5ea2b79d98363d.png
Но когда я пытаюсь получить текст из этого href (я получаю его из sComment с помощью html), он возвращает мне весь текст (который отображается, когда я нажимаю на href), а не его часть, как во всплывающем окне. Я не веб-разработчик, поэтому я не понимаю, как получить только нужный текст. Как я могу это сделать?
Ответ №1:
Следуйте приведенному ниже снимку, чтобы получить только текст во всплывающем окне
Когда вы нажимаете на ссылку href, открывается новая страница с тем же текстом с красным шрифтом, это текст, который вам нужен, поскольку это всплывающий текст, теперь вам нужно просто использовать
String Href=Scomment.attr("href");
Document doc=Jsoup.connect(Href).get();
Element element= doc.getElementById("p101");
String dialogtext=element.text();
Это решение вашего вопроса.
Надеюсь, это поможет вам
Комментарии:
1. Спасибо, но я вижу, что у каждого werb есть этот класс. Итак, когда я пишу документ document; Элементы elements; try { sDayURL = » m.wol.jw.org/en/wol/bc/r1/lp-e/1102014007/91/0 «; document = Jsoup.connect(sDayURL).get(); if (document.hasText()) { элементы = document.select(«.sz»); System.out.println(элементы.text()); } } catch (исключение IOException e) { System.out.println(«ошибка»); e.printStackTrace(); } Он возвращает мне весь текст
2. Нет метода getElementByClass, только getElementsByClass . Строка Href = » m.wol.jw.org/en/wol/bc/r1/lp-e/1102014007/91/0 «; Документ doc = Jsoup.connect(Href).get(); Элементы element = doc.getElementsByClass(«sz»); Строка dialogtext = element.text(); System.out.println(dialogtext); И он также возвращает весь текст
3. используйте getElementById(«p101»); он вернет только текст с идентификатором «p101»
4. Ох… Но как мне узнать, какой идентификатор будет использоваться в другом случае?
5. вы можете найти его на странице по элементу inpect, см. Изображение, которое я отправил вам в моем ответе. вы можете найти там <div id=»p101″> используйте идентификатор текста, который вы хотите извлечь.
Ответ №2:
Используйте sComment = commentElement.text();
вместо этого.
Комментарии:
1. Мне нужен текст, который всплывает, а не заголовок ссылки
2. String relHref = commentElement.attr(«href»); используя этот метод attr, вы должны сначала получить URL ссылки, а затем этот relHref снова пройти через Jsoup.connect(relHref).get() и извлечь из этого то, что вы хотите. Надеюсь, это поможет вам
3. Ммм… Я сделал именно это, но он возвращает весь текст, а не тот, который отображается во всплывающем окне
4. Весь текст, включая тот, который отображается во всплывающем окне?
5. Смотрите, когда я нажимаю на href, отображается вся глава. Когда я даю эту ссылку для jsoup, она также получает всю главу. Мне нужна часть главы, которая отображается во всплывающем окне.