Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách phân tích cú pháp HTML trong Android bằng Kotlin

Giới thiệu

Bài viết này hướng dẫn cách phân tích cú pháp (parse) HTML trong Android sử dụng Kotlin và thư viện Jsoup.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền đầy đủ thông tin để tạo dự án mới.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="8dp"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnParseHTML"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="Lấy website" />

    <TextView
        android:textColor="@android:color/background_dark"
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/btnParseHTML"
        android:layout_centerHorizontal="true"
        android:text="Kết quả"
        android:textSize="12sp"
        android:textStyle="bold" />
</RelativeLayout>

Bước 3: Thêm dependency (build.gradle Module: app)

implementation 'org.jsoup:jsoup:1.11.2'

Bước 4: Viết logic xử lý (src/MainActivity.kt)

import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.jsoup.select.Elements
import java.io.IOException

class MainActivity : AppCompatActivity() {
    lateinit var button: Button
    lateinit var textView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
        
        textView = findViewById(R.id.textView)
        button = findViewById(R.id.btnParseHTML)
        
        button.setOnClickListener {
            getHtmlFromWeb()
        }
    }

    private fun getHtmlFromWeb() {
        Thread(Runnable {
            val stringBuilder = StringBuilder()
            try {
                val doc: Document = Jsoup.connect("https://www.tutorialspoint.com/").get()
                val title: String = doc.title()
                val links: Elements = doc.select("a[href]")
                
                stringBuilder.append(title).append("\n")
                for (link in links) {
                    stringBuilder.append("\n").append("Link : ").append(link.attr("href")).append("\n").append("Text : ").append(link.text())
                }
            } catch (e: IOException) {
                stringBuilder.append("Error : ").append(e.message).append("\n")
            }
            runOnUiThread { textView.text = stringBuilder.toString() }
        }).start()
    }
}

Bước 5: Cấu hình Manifest (androidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.q11">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Chạy ứng dụng

Kết nối thiết bị Android thực với máy tính. Trong Android Studio, mở file activity và nhấn biểu tượng Run trên thanh công cụ. Chọn thiết bị di động của bạn và kiểm tra màn hình hiển thị.

Lưu ý: Jsoup là thư viện phổ biến để parse HTML. Phiên bản mới hơn có thể dùng implementation 'org.jsoup:jsoup:1.17.2'. Luôn thực hiện network request trên background thread.