2011-04-18 8 views
23

मैं एक्सएमएल फ़ाइल से डेटा पुनर्प्राप्त करने के लिए एंड्रॉइड पर जावा लिख ​​रहा हूं, लेकिन मुझे एक समस्या है।एक्सपैथ का उपयोग शुरू करने के साथ-साथ

<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> 

मैं वर्षों में सभी तत्वों को कैसे प्राप्त कर सकते हैं शुरू के साथ 2552. मैंने कोशिश की: इस XML पर विचार करें

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

यह काम करता है, लेकिन जब मैं कोशिश की:

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

यह काम नहीं करता है।

उत्तर

39

उपयोग:

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

नोट: जब तक आपके मेजबान भाषा परिणाम के रूप में तत्व उदाहरण नहीं संभाल सकता है, पाठ का उपयोग नहीं करते मिश्रित सामग्री डाटा मॉडल में विशेष रूप से नोड। जब स्कीमा अच्छी तरह से जाना जाता है तो // ऑपरेटर के साथ अभिव्यक्ति प्रारंभ न करें।

+0

मैं इसे नहीं मिलता का प्रयास करें .../*/का उपयोग फिर से क्यों? मुझे सेलेनियम में XPath के साथ अभी भी एक ही समस्या थी और मैंने अपने प्रारंभिक // के बजाय * जोड़ा। और यह भी काम करता है: GetByxPath (string.Format ("/ */tbody [@ id = 'someContainer']/tr/td [ 1]/ए (शुरू होता है (@href, {0}) ","/ग्राहक/")); – PositiveGuy

+0

गति। // बहुत धीमी है। यदि आप ऐसा कर सकते हैं तो आप हमेशा शीर्ष से नीचे खोजना चाहते हैं बहुत तेज़। – PRMan

5

उपयोग:

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

इस

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

स्पष्टीकरण के साथ एक उत्तर, जैसे [यह] (http://stackoverflow.com/a/5705866/1677912) एक सरल "इस कोशिश करें" की तुलना में बेहतर है (और अधिक वोट प्राप्त करता है) [http] [http: //stackoverflow.com/a/17786221/1677912)। – Mogsdad

संबंधित मुद्दे