【问题标题】:Jsoup get ID of elementsJsoup 获取元素的ID
【发布时间】:2014-07-16 10:55:20
【问题描述】:

我无法使用 jsoup 获取表单的 ID(或名称)。比如……html代码是:

  <form name="input" action="demo_form_action.asp" method="get">
       Username: <input type="text" name="user">
             <input type="submit" value="Submit">
  </form>

我用下面的代码来提取表单的html代码,但是那我怎么得到名字呢?

 Elements tds = doc.getElementsByTag("form");

谢谢!

【问题讨论】:

  • 你做过了吗?我有同样的问题,请分享您的解决方案。谢谢!

标签: java html parsing dom jsoup


【解决方案1】:

这段代码说明了如何获取元素的 id、元素名称(= 标记)或元素的属性。 (在您的问题中不清楚您想要什么,因为您谈论获取 id 或 name 并且您的 html 还包含一个属性“name”)

String html = "<form name=\"input\" action=\"demo_form_action.asp\" method=\"get\">\n" +
            "       Username: <input type=\"text\" name=\"user\">\n" +
            "             <input type=\"submit\" value=\"Submit\">\n" +
            "  </form>";
    org.jsoup.nodes.Document doc = Jsoup.parse(html);

    Elements forms = doc.getElementsByTag("form");
    for (Element form : forms) {
        System.out.println(form.id());
        System.out.println(form.tag());

        Attributes attributes = form.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.toString());
        }
    }

【讨论】:

  • 您假设表单有一个 id,并且您知道它的值。目前尚不清楚FTSoft是否有这些信息。
  • 我自己添加了 id,因为我更容易获得这样的元素。我认为问题不在于如何获取元素,而在于如何获取元素的属性。这就是我这样编写示例代码的原因。
  • FTSoft需要澄清问题。
  • 确实,同时我调整了我的代码以根据标签名称和打印ID、标签和属性获取元素。
  • 是的 Antonio,我不知道 id 的值
【解决方案2】:

试试这个

var tds =document.getElementsByTagName("form");
console.log(tds[0].getAttribute("name"));

FIDDLE

【讨论】:

  • 您正在使用 Javascript 并使用 org.w3c 文档的定义。 FTSoft 询问了 Java,Jsoup 有自己的文档定义和 DOM 操作方法。
【解决方案3】:

首先,您必须考虑到在一个网页中您可以找到多个表单。

执行命令:

Elements tds = doc.getElementsByTag("form");

您在 tds 中存储包含表单的所有 Dom 节点的集合(即有序集)。

这个集合可以是空的,只有一个元素,或者有多个元素。

因此不清楚您是否需要特定表单的名称,或者您想要获取网页中存在的所有表单名称的列表。 请澄清。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多