/ / Ako získať hodnotu z elementu html v systéme Android? - android, html-parsovanie

Ako získať hodnotu z elementu html v systéme Android? - android, html-parsovanie

Ako môžem získať len "H4sIAAA"?

String out="<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAA"  autocomplete="off" />";

odpovede:

-1 pre odpoveď č. 1

Najlepší spôsob, ako to urobiť, je použitie regulárnych výrazov.

Jednoduchý príklad, ktorý presne zodpovedá vášmu problému:

String out= "<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="H4sIAAA"  autocomplete="off" />";
Pattern pattern = Pattern.compile(".*(value="(\w*)").*", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(out);

if (matcher.matches()) {
System.out.println(matcher.group(2));
}

Pracuje len pre jeden riadkový vstup s jednou hodnotou "value =".

Čo to robí?

  1. Pripravuje porovnávanie regulárnych výrazov, ktoré sa zhoduje s celým reťazcom, skupinou s atribútom "hodnota" a druhou skupinou s hodnotou atribútu "hodnota"

  2. Vytvorí zhodu pomocou vzoru a zadaného reťazca „out“

  3. Ak sa zhoduje, vytlačí sa obsah skupiny 2, čo je hodnota atribútov

Výhodou používania regulárneho výrazu je tomôžete svoj výraz ignorovať bez zbytočného obsahu bez ohľadu na to, čo je a sústrediť sa na svoj extrakt, ktorý chcete. Tento príklad je užitočný len pre jeden riadkový vstup s presne jedným hodnotovým atribútom. Ak chcete analyzovať html stránky dier, musíte ho rozšíriť podľa svojich potrieb.

Regex doc: https://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html Dobré miesto na testovanie regexu: http://regexr.com/

Bavte sa!


-1 pre odpoveď č. 2
final String VALUE = "value="";
int start = out.indexOf(VALUE) + VALUE.length();
int end = out.indexOf(""", start);
System.out.println(out.substring(start, end));