Basic XML Parsing in Android
Context
I recently had to parse some xml data in Android and thought - "this should be an easy one-liner" or something similar. I was wrong, there seemed to be a number of ways to do it and they were all more verbose than I would have liked. So this article is to show of the approach I ended up with; the best way I could find to parse simple xml in a simple way.
Input
Here is the sample of XML I want to extract values from
Code
Here is a short function that shows how to extract the title
, updated
string, and link
url from the first entry in the above xml. I use DOM Element and did not need to add any additional third party libraries to the application.
import org.w3c.dom.Element
import org.xml.sax.InputSource
import java.io.StringReader
import javax.xml.parsers.DocumentBuilderFactory
fun parseRssValues(xmlString: String) {
// Boilerplate required for parser
val builderFactory = DocumentBuilderFactory.newInstance()
val docBuilder = builderFactory.newDocumentBuilder()
val inputSource = InputSource(StringReader(xmlString))
val doc = docBuilder.parse(inputSource)
// Grab the root 'feed' element
val feed = doc.getElementsByTagName("feed").item(0) as Element
// 'entry' is an array. Here I grab the first one
val entry = feed.getElementsByTagName("entry").item(0) as Element
// Retrieve simple text content
val title = entry.getElementsByTagName("title").item(0).textContent
val updated = entry.getElementsByTagName("updated").item(0).textContent
// Retrieve data from an elements attribute
val updateLink = entry.getElementsByTagName("link")
.item(0).attributes.getNamedItem("href").textContent
}
More Information