|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
Возможен ли двойной парсинг в Activity или это неправильно?20.12.2013, 16:41. Показов 885. Ответов 5
Метки нет (Все метки)
У меня в Activity есть парсинг XML c выводом результата в TextView.Все работает хорошо. Но помимо результатов с XML,мне нужно еще и парсинг HTML страницы. Так вот вопрос! Как лучше организовать передачу результатов HTML парсинга на эту же Activity. Т.е. на одной Activity у меня и XML парсится и HTML (соответственно в разные TextView).
Как лучше все это сделать и можно ли вообще выполнять такие операции в одном Activity? Надеюсь понятно описал вопрос. Заранее спасибо.
0
|
|
| 20.12.2013, 16:41 | |
|
Ответы с готовыми решениями:
5
Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity Бан за парсинг возможен в моем случае? Скорость трения (именно в такой формулировке) – существует, или всё-таки это неправильно обозвали другое понятие? |
|
Командир зеленых роботов
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 576
|
||
| 21.12.2013, 11:35 | ||
|
1
|
||
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 21.12.2013, 16:49 [ТС] | |
|
angryrobot, а как-нибудь на примерах можете показать?
0
|
|
|
Командир зеленых роботов
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 576
|
|
| 21.12.2013, 19:14 | |
|
0
|
|
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 21.12.2013, 21:29 [ТС] | |
|
angryrobot, вот код парсинга XML
Кликните здесь для просмотра всего текста
public class MainActivity extends Activity { TextView textview; NodeList nodelist; ProgressDialog pDialog; String url; String DetailText; String URL = "Тут адрес xml"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textview = (TextView) findViewById(R.id.text); new DownloadXML().execute(URL); } private class DownloadXML extends AsyncTask<String, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(MainActivity.this); pDialog.setTitle("Loading..."); pDialog.setMessage("Wait..."); pDialog.setIndeterminate(false); pDialog.show(); } @Override protected Void doInBackground(String... Url) { try { URL url = new URL(Url[0]); DocumentBuilderFactory dbf = DocumentBuilderFactory .newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new InputSource(url.openStream())); doc.getDocumentElement().normalize(); nodelist = doc.getElementsByTagName("point"); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void args) { for (int temp = 0; temp < nodelist.getLength(); temp++) { Node nNode = nodelist.item(temp); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; textview.setText(textview.getText() + getNode("point", eElement) + "\n" + "\n"); textview.setText(textview.getText() + getNode("name", eElement) + "\n" + "\n"); textview.setText(textview.getText() + getNode("id", eElement) + "\n" + "\n"); Здесь нужно спарсить и вставить картинку с HTML страницы } } pDialog.dismiss(); } } private static String getNode(String sTag, Element eElement) { NodeList nlList = eElement.getElementsByTagName(sTag).item (0) .getChildNodes(); Node nValue = (Node) nlList.item(0); return nValue.getNodeValue(); } Нужно объединить с этим html парсером Кликните здесь для просмотра всего текста
package pete.android.study; import java.net.URL; import org.htmlcleaner.CleanerProperties; import org.htmlcleaner.HtmlCleaner; import org.htmlcleaner.TagNode; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class HtmlCleanerStudyActivity extends Activity { // HTML page static final String BLOG_URL = "http://xjaphx.wordpress.com/"; // XPath query static final String XPATH_STATS = "//div[@id='blog-stats']/ul/li"; @Override public void onCreate(Bundle savedInstanceState) { // init view layout super.onCreate(savedInstanceState); setContentView(R.layout.main); // decide output String value = ""; try { value = getBlogStats(); ((TextView)findViewById(R.id.tv)).setTex t(value); } catch(Exception ex) { ((TextView)findViewById(R.id.tv)).setTex t("Error"); } } /* * get blog statistics */ public String getBlogStats() throws Exception { String stats = ""; // config cleaner properties HtmlCleaner htmlCleaner = new HtmlCleaner(); CleanerProperties props = htmlCleaner.getProperties(); props.setAllowHtmlInsideAttributes(false ); props.setAllowMultiWordAttributes(true); props.setRecognizeUnicodeChars(true); props.setOmitComments(true); // create URL object URL url = new URL(BLOG_URL); // get HTML page root node TagNode root = htmlCleaner.clean(url); // query XPath Object[] statsNode = root.evaluateXPath(XPATH_STATS); // process data if found any node if(statsNode.length > 0) { // I already know there's only one node, so pick index at 0. TagNode resultNode = (TagNode)statsNode[0]; // get text data from HTML node stats = resultNode.getText().toString(); } // return value return stats; } } Просто нужно результат html парсера вывести там,где я написал "Здесь нужно спарсить и вставить картинку с HTML страницы". Т.к. в xml файле нет картинок,понадобилось парсить через html. Оба парсера я использовал отдельно от друг друга,но в этот раз их нужно объединить. Никогда не сталкивался с одновременным использованием сразу двух. Заранее спасибо.
0
|
|
| 21.12.2013, 21:29 | |
|
Помогаю со студенческими работами здесь
6
За это возможен бан? Jsoup: парсинг странички и заполнение контентом Activity Ошибки с синтаксисом (двойной парсинг) Двойной маятник по методу Эйлера на паскале неправильно строит график Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|