假设我有一些html表单。
<form action="action_page.php">
First name:<br>
<input type="text" name="fistname" value="Mickey" />
<br>
Last name:<br>
<input type="text" name="lastname" value="Mouse" />
<br><br>
<input type="submit" value="Submit">
</form>
我想打印与https://www.tutorialspoint.com/html/html_input_tag.htm
中给出的相同喜欢
名字:.........
姓氏......
我能够获取输入值。我只需要一种方法来读取这个名字的姓氏文本(即输入标签之前的文本)。
我已经看过像.text()这样的方法,或者在jsoups中,但是它们给出了标签内的所有文本。我想要特定的文字。谢谢。
答案 0 :(得分:0)
你应该使用标签。
<form action="action_page.php">
<label for="fname">First name</label>
<input type="text" name="fistname" id='fname' value="Mickey" />
<br>
<label for="lname">Last name</label>
<input type="text" name="lastname" id='lname' value="Mouse" />
<br><br>
<input type="submit" value="Submit">
</form>
然后您可以获得标签值:
$('label[for="'+ this.id +'"]').text()
另一种选择是使用数据属性:
<input type="text" name="lastname" data-descriptor="Last Name" value="mouse"/>
您可以获得以下值:
$(this).data('descriptor')
我不会随意了解非jquery对应的这些,但应该足够简单。
答案 1 :(得分:0)
要使用Java的内置DOM执行此操作,您可以执行以下操作:
此代码将使用input
标记找到文档中所有元素的第一个前一个文本节点。您可以使用Element#getAttribute
检查input元素是否是实际的文本输入字段而不是提交按钮。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new FileInputStream("doc.xml"));//Load document from any InputSource or InputStream
//Loop through all nodes with the input tag:
NodeList nl = document.getElementsByTagName("input");
for(int i = 0; i < nl.getLength(); i++){
Node n = nl.item(i);
if(n.getNodeType() != Node.ELEMENT_NODE)
continue;
Element e = (Element)n;
Node previous = e;
//Loop through all nodes before the input element:
while((previous = previous.getPreviousSibling()) != null){
if(previous.getNodeType() == Node.TEXT_NODE && previous.getTextContent().replaceAll("\\s+", "").length() > 0){
System.out.println(previous.getTextContent().trim()); //Remove whitepsace from beginning and end of the text.
break; //Break after finding the first text element of appropriate length.
}
}
}
虽然我对JSoup一无所知,但我认为你可以像上面的代码一样访问前面的元素。
注意:对于任何想要回答这个问题的人,因为它与我使用DOM而不是JSoup的问题无关,请注意OP在评论中要求这样做。