ValuesStringSaxHandler.kt 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package com.twm.tools.local
  2. import org.xml.sax.Attributes
  3. import org.xml.sax.helpers.DefaultHandler
  4. class ValuesStringSaxHandler: DefaultHandler() {
  5. private val values = mutableListOf<ValuesData>()
  6. private var pending: ValuesData? = null
  7. override fun startElement(uri: String?, localName: String?, qName: String?, attrs: Attributes?) {
  8. if (qName != "string") {
  9. pending = null
  10. return
  11. }
  12. val key = attrs?.getValue("name")
  13. if (key == null) {
  14. pending = null
  15. } else {
  16. pending = ValuesData(key)
  17. }
  18. }
  19. override fun endElement(uri: String?, localName: String?, qName: String?) {
  20. if (qName != "string") {
  21. pending = null
  22. return
  23. }
  24. if (pending != null) {
  25. values.add(pending!!)
  26. pending = null
  27. }
  28. }
  29. override fun characters(p0: CharArray, p1: Int, p2: Int) {
  30. if (pending != null) {
  31. pending?.value = String(p0, p1, p2)
  32. }
  33. }
  34. fun getCollectValues() = values as List<ValuesData>
  35. }