Получить узлы HTML, которые имеют одного и того же родителя - JAVA - PullRequest
1 голос
/ 26 июля 2011

У меня есть документ, содержащий несколько форм, аналогичных приведенному ниже примеру.Я хочу извлечь все пары имя / значение из скрытых полей ввода одной из форм, форма идентифицируется по ее имени, и я не знаю заранее, сколько скрытых полей будет присутствовать.Я могу выбрать все соответствующие поля ввода в документе, используя запрос селектора: input[type=hidden][name][value]

Можно ли выбрать только поля ввода, для которых FORM[name=lgo] является родительским?Может быть, вы используете какой-то фильтр?

<FORM METHOD='POST' onSubmit='javascript:isWaitForm();' ACTION='https://abc-azerty.querty.se/carmon/servlet/action/change_1     ' name='lgo'>
    <input type='hidden' name='LogInFlag' value='1'>
    <input type='hidden' name='LogInTime' value='2011-07-26 11:10'>
    <input type='hidden' name='cCode2' value='SE'>
    <a href='javascript:isWaitForm();javascript:document.lgo.submit();' class='linkNone'>Business Monitor</a>
    <a href='javascript:isWaitForm();javascript:document.lgo.submit();' class='linkNone'>
    <input type='image' src='/images/button_arrow_right.gif' height=19 width=22 border=0 style='float:left;'></A>
</FORM>

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

На основании этой информации должно работать хотя бы одно из следующих действий -

doc.select("form[name=lgo] > input[type=hidden]");

Или, вы можете связать свои выборы -

doc.select("form[name=lgo]").select("input[type=hidden]");

Метод выбора доступен в документе, элементе или элементах. Он контекстуален, поэтому вы можете фильтровать, выбирая из определенного элемента или связывая вызовы выбора.

0 голосов
/ 26 июля 2011
<script type="text/javascript">
var inputs = document.getElementsByName('lgo')[0].getElementsByTagName('input');
for(var i = 0 ; i < inputs.length ; i++){
  if(inputs[i].getAttribute('type') == "hidden") {
  // This will get the name: inputs[i].getAttribute('name')
  // This will get the value: inputs[i].value)
  console.log(inputs[i].getAttribute('name') + ": " + inputs[i].value);
}}
</script>
...