Jsoup - Android - анализировать информацию из данных/ввода формы

Я использую Jsoup в своем приложении и пытаюсь проанализировать информацию из нескольких входных тегов, чтобы автоматически добавить их в URL-адрес и опубликовать данные.

Часть HTML, которую я пытаюсь проанализировать, выглядит следующим образом:

<div class='theDivClass'>
    <form method="post" id="handlePurchase" name="makePurchase" action="/shop.php">
        <input type="hidden" name="ProductCode" value="A1223MN" />
        <input type="hidden" name="SystemVersion" value="3" >
        <input type="hidden" name="ProductClass" value="BOOK" />
    </form>
</div>

Желаемый результат будет

x = A1223MN
y = 3
z = BOOK

Я наполовину знаком с JSOUP в том смысле, что могу анализировать текст, изображения и URL-адреса, но по какой-то причине это не работает для меня.

Любая помощь будет принята с благодарностью.


person Joey    schedule 28.06.2011    source источник


Ответы (4)


Вы должны быть в состоянии использовать это:

Elements hidden = doc.select("input[type=hidden]");

А затем просто извлеките значения атрибутов из каждого элемента в hidden. Я только что попробовал, и, похоже, он работает так, как ожидалось.

Для полноты:

Map<String,String> hiddenList = new HashMap<String, String>();
Elements hidden = doc.select("input[type=hidden]");
for (Element el1 : hidden){
    hiddenList.put(el1.attr("name"),el1.attr("value");
}

Дает вам карту всех скрытых полей ввода в документе.

person Kevin Appleyard    schedule 19.12.2011

Я нашел еще один способ:

FormElement f = (FormElement) doc.select("form#handlePurchase").first();
System.out.println(f.formData());

Результат:

[ProductCode=A1223MN, SystemVersion=3, ProductClass=BOOK]
person aditsu quit because SE is EVIL    schedule 28.03.2014

Закрывая этот вопрос, как следует из всех исследований, которые я провел, вы не можете извлекать данные из «скрытых» типов ввода.

person Joey    schedule 17.07.2011

person    schedule
comment
Я попробовал код, который вы указали выше, и он все еще возвращает пустые значения. Я внес изменения в свой исходный вопрос, чтобы, возможно, пролить больше света на эту тему, но я не думаю, что дополнительный код влияет на то, как мы извлекаем из него данные. Это потому, что типы скрыты? Когда я беру только данные класса div, форма и входные значения не отображаются в выходной строке. - person Joey; 29.06.2011