XStream的是很容易(在Android上工作,没有依赖)。
它不是像Simple或JAXB那样的ORM库,而是专注于拉解析规范给予我们的最大解析性能,但是XPath的飞溅提供了易于定义的解析规则,而不是自己管理pull语法分析器的状态。
例如,您将针对在XML的某些元素与规则,像这样(这是我与它内置的RSS解析器为例):
IRule linkRule = new DefaultRule(Type.CHARACTER, "/rss/channel/item/link") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
// 'text' is the link; store it, print it, whatever you need...
}
}
您可以定义任意数量的规则,并给他们到XMLParser(可重用)的一个实例,然后根据这些规则将它的InputStreams用于XML解析。
拉解析器的SJXP ontop的解析开销接近零(内存和CPU开销) - 它实际上相当于1次哈希代码计算,然后只是整数比较,看看是否有规则匹配XML解析器在运行内容时的当前位置。
它支持的属性和特征数据 - 图书馆甚至有通过使用[] -notation支持命名空间一个很好的和优雅的方式......例如:
IRule channelSubjectRule = new DefaultRule(Type.CHARACTER, "/rss/channel/[http://purl.org/dc/elements/1.1/]subject") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
// Got the Channel's dc:subject value! I win!
}
}
库并不意味着是另一种神秘的抽象,隐藏你的一切;它的含义要低一点,但仍然高于STAX解析,而不会引入内存或CPU膨胀到嵌入式或高性能系统的解析过程(这是为在长时间运行的spidering过程中使用的feed解析器编写的) )。