I made a tiny DSL for StAX to parse XML files real...
# dsl
b
I made a tiny DSL for StAX to parse XML files really fast (see

https://www.bjonnh.net/share/stax_and_kotlin_coroutines.png

). The following code is equivalent to getting a list of PubmedArticle which have: pmid = /PubmedArticle/MedlineCitation/PMID.value journal = /PubmedArticle/MedlineCitation/Article/Journal/Title.value abstract = /Pubmed/Article/MedlineCitation/Article/Abstract/*.value However I still find it a bit ugly, any idea what I could improve here:
Copy code
val articleList = reader.document {
                element("PubmedArticle") {
                    PubmedArticle().apply {
                        element("MedlineCitation") {
                            element("PMID", "Article") {
                                when (it) {
                                    "PMID" -> pmid = text("PMID")
                                    "Article" -> {
                                        element("Journal", "Abstract") {
                                            when (it) {
                                                "Journal" -> element("Title") {
                                                    journalTitle = text("Title") }
                                                "Abstract" -> abstract = text("Abstract")
                                                else -> {
                                                }
                                            }
                                        }
                                    }
                                    else -> {
                                    }
                                }
                            }
                        }
                    }
                }
            }