2011-04-01 15 views
5

मैं एक XPath निम्न XML से uniqueappversionid का मान देने के लिए परिभाषित किया पाने के लिए संघर्ष कर रहा हूँ के साथ विशेषता: अधिक विशेष रूप सेXpath भाई का मान का चयन करने के नाम स्थान

<?xml version="1.0" encoding="UTF-8"?> 
<manifest package="air.com.vzw.Foo" 
      android:versionCode="0" 
      android:versionName="0.0.0" 
      android:installLocation="auto" 
      xmlns:android="http://schemas.android.com/apk/res/android"> 
    <application android:label="FooAIR"> 
     <meta-data android:name="autoOrients" android:value="true" /> 
     <meta-data android:name="fullScreen" android:value="false" /> 
     <meta-data android:name="uniqueappversionid" 
        android:value="b1e1bfa8-20b4-4724-a9c3-34b79bc50b8d" /> 
     <meta-data android:name="initialcontent" android:value="FooAIR.swf" /> 
    </application> 
</manifest> 

, मैं का मूल्य प्राप्त करने की आवश्यकता meta-data तत्व से android:nameuniqueappversionid के बराबर विशेषता के साथ विशेषता।

उत्तर

3

a उपसर्ग http://schemas.android.com/apk/res/android नाम स्थान के लिए बाध्य के साथ:

/manifest 
    /application 
     /meta-data[@a:name='uniqueappversionid'] 
     /@a:value 
+0

मैंने' ''/manifest/application/meta-data [@android: name = 'uniqueappversionid']/@ android: value''' को बाध्यकारी किए बिना उपयोग किया, जो मूल रूप से एक ही चीज़ को पूरा करता है। –

2

ठीक है, वहाँ शायद एक बेहतर तरीका है, लेकिन यह है कि मैं क्या का उपयोग कर समाप्त हो गया है:

//meta-data[@*='uniqueappversionid']/@*[2] 

मैं सुझाव यह सुधार करने के लिए बहुत सराहना करेंगे!

+0

गुणों के लिए कभी भी स्थितित्मक भविष्यवाणियों का उपयोग न करें। एक्सएमएल पार्सर्स को स्रोत ऑर्डर को सुरक्षित रखने के लिए कोई दायित्व नहीं है। –

+2

यह बेहतर होगा // // मेटा-डेटा [@ * = 'अनन्यappversionid']/@ * [।! = 'Uniqueappversionid'] ' –

+1

छोटा:' //@*[.='uniqueappversionid']/../ @ * [। ! = 'uniqueappversionid'] ' –

0

आपका प्रश्न ढांचा है जिसमें आप XPath क्वेरी खुद की सामग्री के साथ के रूप में अपने XPath क्वेरी को क्रियान्वित कर रहे हैं के साथ क्या करना के रूप में ज्यादा है। उदाहरण के लिए, आप निम्न तरीके से XSLT में कर देगा:

<stylesheet version="1.0" 
      xmlns="http://www.w3.org/1999/XSL/Transform" 
      xmlns:android="http://schemas.android.com/apk/res/android"> 
    <template match="/"> 
    <value-of select="//meta-data[@android:name = 'uniqueappversionid']/@android:value" /> 
    </template> 
</stylesheet> 

नाम स्थान सेटअप के माध्यम यहाँ के माध्यम से xmlns XSLT तत्वों जिसके तहत XPath क्वेरी नीडिंत है पर जिम्मेदार बताते है। एक विशिष्ट अनिवार्य प्रोग्रामिंग भाषा वातावरण में, संभवतः आप XML ऑब्जेक्ट्स के पैरामीटरकरण के माध्यम से नेमस्पेस उपनाम सेट अप करने की अधिक संभावना रखते हैं जिसके विरुद्ध आप क्वेरी का मूल्यांकन कर रहे हैं। ऐसे माहौल के लिए उत्तर निर्दिष्ट करने के लिए, आपको एक्सएमएल ढांचे के बारे में विशिष्ट जानकारी प्राप्त करनी होगी।

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