Мне нужно отсканировать 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)
}
}
}