XPath

2013-05-23 6 views
10

का उपयोग कर डिफ़ॉल्ट नामस्थान (कोई नेमस्पेस उपसर्ग) वाले तत्व प्राप्त करना इस SOAP XML फ़ाइल में, मैं XPath क्वेरी का उपयोग कर 7 कैसे प्राप्त कर सकता हूं?XPath

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <HelloWorldResponse xmlns="http://tempuri.org/"> 
      <HelloWorldResult>7</HelloWorldResult> 
     </HelloWorldResponse> 
    </soap:Body> 
</soap:Envelope> 

यह XPath क्वेरी //*[name() ='soap:Body'] काम नहीं कर रही है।

+0

आप निकालने का प्रयास कर रहे हैं क्या? –

+0

समस्या नहीं है – user2411903

+0

गायब <। लेकिन समस्या नहीं है। मुझे नंबर 7 – user2411903

उत्तर

18

आप एक नामस्थान उपसर्ग सेट है, तो आप इसे इस्तेमाल कर सकते हैं, जैसे:

//soap:Body 

लेकिन नोड्स आप एक डिफ़ॉल्ट नाम स्थान का उपयोग करने की कोशिश कर रहे हैं, एक उपसर्ग के बिना, सादे XPath का उपयोग कर के बाद से, आप केवल उन्हें local-name() और namespace-uri() विशेषताओं से प्राप्त कर सकते हैं। उदाहरण:

//*[local-name()="HelloWorldResult"]/text() 

या:

//*[local-name()="HelloWorldResult" and namespace-uri()='http://tempuri.org/']/text() 

या:

//*[local-name()="HelloWorldResponse" and namespace-uri()='http://tempuri.org/']/*[local-name()="HelloWorldResult"]/text() 

अपने xml करने के लिए, वे सभी एक ही परिणाम दे देंगे, पाठ 7

+0

** नोट चाहिए: ** यदि आप XPath निष्पादित करने के लिए टूल का उपयोग कर रहे थे, तो आप उस क्वेरी के लिए नेमस्पेस निर्दिष्ट कर सकते हैं और सामान्य रूप से आगे बढ़ सकते हैं (ऊपर दिए गए वर्कअराउंड के बिना)। कहने की जरूरत नहीं है, प्रत्येक उपकरण में इसे स्थापित करने का एक विशिष्ट तरीका है। – acdcjunior

+0

उत्कृष्ट, बहुत बहुत धन्यवाद – user2411903

+0

क्या यह वाक्यविन्यास केवल तभी काम करता है जब xmlns = "जो भी" वाला नोड अंतिम नोड है? मैंने आज बार-बार यह कोशिश की है और इसे काम पर नहीं ला सकता है। –