gpt4 book ai didi

jsoup - 如何使用 jsoup 从我当前的元素实例中使用 jsoup 获取上一个元素

转载 作者:行者123 更新时间:2023-12-02 00:03:35 27 4
gpt4 key购买 nike

我有一些像这样的 html:

<---Some HTML code before --->
<label class="inputLabel" for="zipCodeEntry" style="display: block;">zip code</label>
<input id="zipCodeEntry" class="login" type="text" value="" maxlength="5" name="zipcode">
<---Some HTML code before --->

我的 Java 代码

Elements formElements =  doc.getElementsByTag("form");
for(Element formElem : formElements){
Elements inputElements = formElem.getElementsByTag("input");
for(Element inputElem : inputElements){
String name = inputElem.attr("name");
/* Need to scrape label text here. I've inputElemen Object here.*/
}
}

问题:我有上面代码中提到的 inputElem 实例,我想要输入元素的前一个元素。输入元素的前一个元素每次都不同。我们不知道哪个标记元素将是输入元素的前一个元素。我必须只通过输入元素。因此,如果我说获取输入元素的前一个标签元素,它应该给我前一个标签元素,无论它是什么标签

最佳答案

你可以解析所有的表单元素(它的子元素),如果你遇到 <input>标签,从前一个子标签中获取文本。

例子:

Elements formElements =  doc.getElementsByTag("form");            // select all of the forms from the document
for(Element formElem : formElements) {
Elements formChildren = formElem.select("*"); // select all child tags of the form
for(Element formChild : formChildren) {
if (formChild.tagName().equals("input")) { // if the child is <input>
String name = formChild.attr("name"); // get <input> name attribute
String label = formChildren
.get(formChildren.indexOf(formChild) - 1).text(); // get text from previous child element
}
}
}

所以在这个例子中,name将是“邮政编码”和label将是“邮政编码”。 <input> 之前的元素是什么并不重要是,因为它只检索索引为 i-1 的所有元素并检索其 text()值(value)。

这适用于您提供的 html,但您可能需要根据 html 表单的复杂性对其进行调整。还要小心 IndexOutOfBoundsException .

关于jsoup - 如何使用 jsoup 从我当前的元素实例中使用 jsoup 获取上一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com