Skip to content

Instantly share code, notes, and snippets.

@bjonnh
Created March 6, 2019 19:30
Show Gist options
  • Save bjonnh/f91838e87b8c17daf829d4d559d3e44f to your computer and use it in GitHub Desktop.
Save bjonnh/f91838e87b8c17daf829d4d559d3e44f to your computer and use it in GitHub Desktop.
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.dataformat.xml.XmlMapper
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty
@JsonIgnoreProperties(ignoreUnknown = true)
class MedlineCitation(
@JacksonXmlProperty(isAttribute = true, localName = "Status")
val Status: String? = null,
@JacksonXmlProperty(isAttribute = true, localName = "Owner")
val owner: String? = null
)
@JsonIgnoreProperties(ignoreUnknown = true)
class PubmedArticle(
@JsonProperty("MedlineCitation")
val medlineCitation: MedlineCitation? = null
)
@JsonIgnoreProperties(ignoreUnknown = true)
data class PubmedArticleSet(
@get:JacksonXmlElementWrapper(useWrapping = false)
@get:JacksonXmlProperty(localName = "PubmedArticle")
var PubmedArticle: List<PubmedArticle> = listOf()
)
class EfetchParser {
fun test() {
var text = """<PubmedArticleSet>
|<PubmedArticle><MedlineCitation Status="A" Owner="B"></MedlineCitation></PubmedArticle>
|<PubmedArticle><MedlineCitation Status="A" Owner="B"></MedlineCitation></PubmedArticle>
|</PubmedArticleSet>""".trimMargin()
val xmlMapper = XmlMapper()
val parsed = xmlMapper.readValue(text, PubmedArticleSet::class.java)
println(parsed.PubmedArticle?.get(0)?.medlineCitation?.Status)
}
}
fun main() {
val efp = EfetchParser()
efp.test()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment