HTMLページからHTML要素を解析する必要があるJavaアプリケーションがあります。私の簡単なHTMLテストは次のように設定されています。
<!DOCTYPE html>
<html>
<head>
<style type='text/css'>
div {width:100%;height:100px;background-color:blue;}
</style>
</head>
<body>
<div></div>
</body>
</html>
私のコードは、ドキュメントで次の文字列を検索するように設定されます: "<style"
次に、終了キャロット: ">"を検索します。これは、ユーザーがHTMLファイルに次の組み合わせのいずれかを入力した可能性があるためです。
<style type="text/css">
or
<style type = "text/css" >
or
<style type = 'text/css' >
or
<style type='text/css'>
etc..
だから私の方法は、「スタイル」タグとその最後のニンジンまでのすべてを見つけることです
次に、終了スタイルタグを見つけます。
</style>
次に、これら2つのエンティティ間のすべてを取得します。
これが私のファイルとそのコードです:
************strings.xml************
String txt_style_opentag = "<style"
String txt_end_carrot = ">"
String txt_style_closetag = "</style>"
***********************************
************Parser.java************
public static String getStyle(Context context, String text) {
String style = "";
String openTag = context.getString(R.string.txt_style_opentag);
String closeTag = context.getString(R.string.txt_style_closetag);
String endCarrot = context.getString(R.string.txt_end_carrot);
int openPos1 = text.indexOf(openTag);
int openPos = text.indexOf(endCarrot, openPos1);
int closePos = text.indexOf(closeTag, openPos1);
if (openPos != -1 && closePos != -1)
style = text.substring(openPos + openTag.length(), closePos).trim();
if (style != null && style.length() > 0 && style.charAt(0) == '\n') // first \n remove
style = style.substring(1, style.length());
if (style != null && style.length() > 0 && style.charAt(style.length() - 1) == '\n') // last \n remove
style = style.substring(0, style.length() - 1);
return style;
}
********************************************************
私の結果は近いですが、正しくありません。結果は次のとおりです。
{width:100%;height:100px;background-color:blue;}
お気づきの方は、「div」の部分がありません。次のようになります。
div {width:100%;height:100px;background-color:blue;}
私はここで何を間違っているのですか。誰か助けてもらえますか?