2011-04-18 29 views
23

XML dosyasından veri almak için Android'de Java yazıyorum ama bir sorunum var. Yıllardır tüm unsurları nasıl alabilirim başlangıç ​​ile 2552. denedimBaşlatma işlevini kullanarak Xpath

<ITEM> 
    <REVENUE_YEAR>2554-02</REVENUE_YEAR> 
    <REGION>Central</REGION> 
</ITEM> 
<ITEM> 
    <REVENUE_YEAR>2552-02</REVENUE_YEAR> 
    <REGION>Central</REGION> 
</ITEM> 
<ITEM> 
    <REVENUE_YEAR>2552-03</REVENUE_YEAR> 
    <REGION>Central</REGION> 
</ITEM> 

: Bu XML düşünün

//REVENUE_YEAR[starts-with(.,'2552')]/text() 

O çalışıyor ancak ben denedim:

//REVENUE_YEAR[starts-with(.,'2552')]/REGION/text() 

işe yaramıyor.

cevap

39

Kullanım:

/*/ITEM[starts-with(REVENUE_YEAR,'2552')]/REGION 

Not: host dil metni kullanın, sonuç olarak eleman örneğini işleyemez sürece karma içerik veri modelindeki özel düğümlerin. Şema iyi biliniyorsa, // operatörüyle ifadelere başlama.

+0

ben alamadım deneyin ... neden tekrar/*/kullanmak? Ben sadece Selenium içinde XPath ile benzer bir sorun vardı ve ben benim ilk // yerine * ekledim ve ayrıca çalışır: GetByxPath (string.Format ("/ */tbody [@ id = 'someContainer']/tr/td [ 1]/a (with-with (@href, {0}) ","/Customers/")) – PositiveGuy

+0

Hız // çok yavaş, her zaman üstünden aşağıya doğru arama yapmak isteyebilirsiniz çünkü çok daha hızlı – PRMan

5

Kullanım:

//REVENUE_YEAR[starts-with(.,'2552')]/../REGION/text() 
2

bu

//ITEM/*[starts-with(text(),'2552')]/following-sibling::* 
+4

[Bu] (http://stackoverflow.com/a/5705866/1677912) gibi bir açıklama ile bir cevap daha basittir (ve daha fazla oy alır) basit bir "bunu deneyin" gibi [bundan] (http: //stackoverflow.com/a/17786221/1677912). – Mogsdad