div id

2012-02-15 25 views
9

से xpath सामग्री पुनर्प्राप्त करें आलेख-फ़ील्ड 1 के अंदर पाठ को मैं कैसे पुनर्प्राप्त करूं?div id

<title>Testing</title> 
    <link>http://example.org</link> 
    <description>Description</description> 
    <language>en-us</language> 
    <lastBuildDate>Mon, 13 Feb 2012 00:00:00 +0000</lastBuildDate> 

    <item> 
    <title>Title Here</title> 
    <link>http://example.org/2012/03/27/</link> 
    <description><![CDATA[ 
     <div id="article-field1"><a href="http://example.org/test1">Test 1</a></div> 
     <div id="article-field2">123</div> 
    <pubDate>Tue, 2 Mar 2012 00:00:00 +0000</pubDate> 
    </item> 

मैं

//description/div[@id="article-field1"]/text() 

किसी भी सलाह का उपयोग करने की कोशिश की है?

धन्यवाद

+3

आपने एक विकृत एक्सएमएल (' penartur

+1

मैं नहीं देख सकता कि आपका सीडीएटीए अनुभाग कहां समाप्त होता है। दो बंद ब्रैकेट होना चाहिए। वास्तव में, नमूना दूसरे विवरण के लिए कुछ बंद टैग गायब है। यह सिर्फ विकृत है। कृपया सही करें। – ingyhere

+0

@ छाया: सबसे अच्छी सलाह है कि <<[सीडीएटीए ['दस्तावेज़ से हटाएं - फिर आपकी XPath अभिव्यक्ति नए दस्तावेज़ पर वांछित नोड्स का चयन कर सकती है। –

उत्तर

2

आप सादे-वनिला XPATH प्रोसेसर की एक कॉल के साथ यह नहीं कर सकते।

  1. एक विशिष्ट XPATH प्रोसेसर dyn:evaluate() समारोह लागू करता है कि उपयोग करता है:

    आपके पास दो विकल्प: (और इस सवाल भीख माँगता क्या प्रोसेसर और संस्करण का उपयोग कर रहे हैं?) या

  2. दो कॉल का उपयोग करें। पहले जाओ/शीर्षक/आइटम/विवरण नोड का टेक्स्ट मान प्राप्त करें। दूसरा, पहले के परिणाम को नए एक्सएमएल दस्तावेज़ के रूप में लोड करने के बाद (कुछ tweeks के साथ xml खंड को उचित xml दस्तावेज़ में परिवर्तित करने के लिए), div [@ id = "article-field1"] है।
+0

नोट: शीर्षक/आइटम/विवरण नोड की सामग्री शुद्ध वर्ण डेटा है, एक्सएमएल नहीं, यही कारण है कि "// description/div [@ id =" article-field1 "]/text()" काम नहीं करता है। –

3

जो मैं देखता हूं उससे आपका डेटा सीडीएटीए टैग में है। यह अपनी सामग्री को पार्सिंग रोकता है। अधिक जानकारी के लिए

How do I retrieve element text inside CDATA markup via XPath? देखें।

2
//description/div[@id="article-field1"]/a/text() 

विकृत CDATA टैग निकाल दिया जाता है, तो एक मूल तत्व जोड़ दिया जाता है और इसी को 'विवरण' टैग बंद कर दिया है। यह आंशिक रूप से मूल एक्सएमएल चिपकाने की त्रुटि मानता है, जो अभिव्यक्ति को समझ में आता है। असल में, मूल क्वेरी में a तत्व गुम था।

यह http://www.xpathtester.com/ पर सत्यापित किया जा सकता है।