Я пишу приложение для Android, которое извлекает данные XML с сервера.Для манипулирования такими данными я использую Retrofit-SimpleXmlConverter (http://simple.sourceforge.net/home.php, https://github.com/square/retrofit/tree/master/retrofit-converters/simplexml) конвейер. Мне нужно получить этот список транзакций:
<?xml version="1.0"?>
<Transactions>
<Transaction>
<Transaction_Time>12-01-2018</Transaction_Time>
<Transaction_Bonuses>123.11</Transaction_Bonuses>
<Summ>123.11</Summ>
<Transaction_Type>12</Transaction_Type>
<Dop_Info>BLOB Base64 data with cyrillic symbols</Dop_Info>
</Transaction>
<Transaction>
<Transaction_Time>12-01-2018</Transaction_Time>
<Transaction_Bonuses>123.11</Transaction_Bonuses>
<Summ>123.11</Summ>
<Transaction_Type>12</Transaction_Type>
<Dop_Info>no/Dop_Info>
</Transaction>
Моя проблемав том, что xml имеет тег с XML-кодом в кодировке BASE-64. Из кодированного XML-файла мне нужны следующие данные:
<CHECK>
<LINE name="Name of dish", quantity="1", summ="123,5"></LINE>
<LINE name="Name of dish", quantity="1", summ="123,5"></LINE>
<LINE name="Name of dish", quantity="1", summ="123,5"></LINE>
</CHECK>
Классы данных:
@Root(name = "Transactions")
data class Transactions @JvmOverloads constructor(
@field:ElementList(inline = true, required = false)
@param:ElementList(inline = true, required = false)
val list: List<Transaction>? = null
) {
@Root(name = "Transaction")
data class Transaction @JvmOverloads constructor(
@field:Element(name = "Transaction_Time")
@param:Element(name = "Transaction_Time")
var transactionTime: String? = null,
@field:Element(name = "Transaction_Bonuses")
@param:Element(name = "Transaction_Bonuses")
val transactionBonuses: Double? = 0.0,
@field:Element(name = "Summ")
@param:Element(name = "Summ")
val summ: Double? = 0.0,
@field:Element(name = "Transaction_Type")
@param:Element(name = "Transaction_Type")
val transactionType: Int? = 0,
@field:Element(name = "Dop_Info")
@param:Element(name = "Dop_Info")
val dopInfo: ByteArray ? = null
){
@Root(name = "CHECK")
data class Check @JvmOverloads constructor(
@field:ElementList(inline = true, required = false)
@param:ElementList(inline = true, required = false)
@field:Path("CHECKDATA/CHECKLINES")
@param:Path("Holders_Cards/Holder_Card/Card")
val list: List<Line>? = null
){
@Root(name = "LINE")
data class Line @JvmOverloads constructor(
@field: Attribute(name = "name", required = false)
@param: Attribute(name = "name", required = false)
val name: String? = null,
@field: Attribute(name = "quantity", required=false)
@param: Attribute(name = "quantity", required=false)
val quantity: Int? = null,
@field: Attribute(name = "summ", required = false)
@param: Attribute(name = "summ", required = false)
val summ: Double? = null
)
}
}
}
На данный момент я запутался - какмогу ли я правильно сериализовать xml так, как я мог бы получить вместо модели проверки blob-data? Какие дальнейшие шаги?
PS Для решения я попытался использовать руководство из http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#callback, но это не помоглоничего полезного