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解析器編寫的) )。
感謝您的答覆。 雖然你的建議很好,但我正在尋找面向Annotation的東西,因爲這是我認爲最適合我複雜的XML Schema的東西,因爲它的關係非常細麪條。 所以你可以請,如果你知道,給我提供一些註釋導向。 –
穆罕默德,不幸的是,簡單的XML是我對android和基於註釋的工作的唯一建議。抱歉。 –