Как я могу использовать значения XML внутри строки - PullRequest
1 голос
/ 11 октября 2019

Мне нужно отсканировать qr-код на устройстве Android. Результат, который мне дают, входит в переменную типа string. Текстовый формат xml. И мне нужно извлечь значения оттуда. Как я могу это сделать? Я использую язык программирования Kotlin. Мне нужно значение в Matricula. Вот пример текста xml внутри строки:

    <?xml version="1.0" encoding="iso-8859-1"?>
<dua xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dua_2d.xsd">
    <A nome="Matricula">data</A>
    <C21 nome="apelido_proprietario">data1</C21>
    <C22 nome="nomes_proprietario">data2</C22>
    <C23 nome="morada_proprietario">data3</C23>
    <C31 nome="apelido_utilizador">data4</C31>

</dua>

Мой код:

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    btn_scan.setOnClickListener {
        val scanner = IntentIntegrator(this)
        scanner.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE)
        scanner.setBeepEnabled(false)
        scanner.initiateScan()
    }
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (resultCode == Activity.RESULT_OK) {
        val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
        if (result != null) {
            if (result.getContents() == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show()
            } else {
                Toast.makeText(this, "Scanned: " + result.contents, Toast.LENGTH_LONG).show()
                xml.text = result.contents
                try {
                    val obj = JSONObject(result.getContents())
                    xml.text = obj.getString("Matricula")
                } catch (e: JSONException) {
                    e.printStackTrace()
                }
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data)
        }
    }
}
...