【问题标题】:Get HTML nodes that have the same parent - JAVA获取具有相同父级的 HTML 节点 - JAVA
【发布时间】:2011-10-13 16:16:11
【问题描述】:

我有一个包含多个表单的文档,类似于下面发布的示例。我想从其中一个表单的隐藏输入字段中提取所有名称/值对,表单由其名称标识,我事先不知道会出现多少隐藏字段。

我可以使用选择器查询选择文档中的所有相关输入字段: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>

【问题讨论】:

  • 不,很遗憾没有。必须是基于 java 的解决方案。
  • 当你说Java时,你是指服务器端Java还是Javascript?

标签: java html parsing dom jsoup


【解决方案1】:

基于this info,以下至少一项应该有效 -

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

或者,您可以链接您的选择 -

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

select 方法在 Document、Element 或 Elements 中可用。它是上下文相关的,因此您可以通过从特定元素中进行选择或链接选择调用来进行过滤。

【讨论】:

    【解决方案2】:
    <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>
    

    【讨论】:

    • 不幸的是,我使用的是 java 和 jsoup,不能使用基于 javascript 的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 2014-08-14
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多