2011-06-28 41 views
1

我在我的应用程序中使用Jsoup,我试图解析来自几个输入标签的信息,以便将它们添加到URL并自动发布数据。Jsoup - Android - 从表单数据/输入解析信息

HTML我试图解析的部分如下:

<div class='theDivClass'> 
    <form method="post" id="handlePurchase" name="makePurchase" action="/shop.php"> 
     <input type="hidden" name="ProductCode" value="A1223MN" /> 
     <input type="hidden" name="SystemVersion" value="3" > 
     <input type="hidden" name="ProductClass" value="BOOK" /> 
    </form> 
</div> 

所需的输出将

x = A1223MN 
y = 3 
z = BOOK 

我在,我能感觉半路熟悉JSOUP解析出文字,图像和网址,但由于某些原因,这不是为我点击。

任何帮助将不胜感激。

回答

-2

结束这个问题,因为从我所做的所有研究中可以看出,您无法从“隐藏”输入类型中提取数据。

+2

你错了,凯文的代码工作正常 – aditsu

+0

同意,你是错误的。 –

1
Element.select("input[name=productCode]").attr("value"); 
Element.select("input[name=SystemVersion]").attr("value"); 
Element.select("input[name=ProductClass]").attr("value"); 
+0

我想你的代码上面列出,它仍然是回到“空”值。我对原始问题进行了编辑,以便可以更多地了解该主题,但我不认为附加代码会影响我们如何从中提取数据。是否因为“类型”是隐藏的?当我抓取div类数据时,表单和输入值不会出现在输出字符串中。 – Joey

7

您应该能够使用:

Elements hidden = doc.select("input[type=hidden]"); 

然后就是拉ATTR值从每个元素hidden。我刚刚尝试过,它似乎按预期工作。

出于完整性:

Map<String,String> hiddenList = new HashMap<String, String>(); 
Elements hidden = doc.select("input[type=hidden]"); 
for (Element el1 : hidden){ 
    hiddenList.put(el1.attr("name"),el1.attr("value"); 
} 

会给你一个地图文档中所有隐藏的输入字段。

1

还有另外一种方式,我发现:

FormElement f = (FormElement) doc.select("form#handlePurchase").first(); 
System.out.println(f.formData()); 

结果:

[ProductCode=A1223MN, SystemVersion=3, ProductClass=BOOK]