2013-02-19 22 views
11

मैं एक वेबसाइट फ़ीड कि लग रहा है इसपार्स एचटीएमएल jQuery या जावास्क्रिप्ट

<rss...> 
    <title> some title </title> 
    <content> 
     <![CDATA[ <div>this tag is ignored<div> who took the cookie in the cookie jar!? ]]> 
    </content> 
</rss> 

जैसे मैं html में प्रदर्शित करने के लिए cdata की संपूर्ण सामग्री की जरूरत हो रही है का उपयोग कर cdata अंदर। मैं jquery 1.9.1 का उपयोग कर रहा हूं और जब मुझे $(xml).find('rss content').text(), का उपयोग करके सामग्री भाग मिलता है तो यह वास्तव में पूरे <div>this tag is ignored<div> भाग को अनदेखा करता है। जावास्क्रिप्ट या jquery का उपयोग कर सीडीएटीए के अंदर सबकुछ पाने का कोई तरीका?

+0

सीडीएटीए पार्सर से डेटा छिपाने के लिए है, ताकि इसे डीओएम में HTML के रूप में पार्स नहीं किया जा सके। मैं समझने की कोशिश कर रहा हूं कि सीडीएटीए में आपका एचटीएमएल क्यों छिपा हुआ है? क्या आप इसे सिर्फ अजाक्स कर सकते हैं? –

+0

क्या आपने 'text()' के बजाय 'html()' का उपयोग करने का प्रयास किया है? – Stefan

उत्तर

6

संभावना है कि आपका मार्कअप jQuery द्वारा एक्सएमएल के रूप में पार्स नहीं किया गया है। स्पष्ट रूप से $.parseXML() लागू प्रयास करें:

var contentText = $($.parseXML(xml)).find("rss content").text(); 
1

jQuery सबसे अच्छा एक स्ट्रिंग से XML दस्तावेज़ों को पार्स पर नहीं है। ब्राउज़र के मूल डोम पार्सर का उपयोग करना बेहतर होगा। jQuery फिर पार्स किए गए XML दस्तावेज़ के साथ बहुत बेहतर काम कर सकता है; अन्यथा मेरा मानना ​​है कि यह एक्सएमएल की तरह काम करने की कोशिश करेगा जो अजीब परिणाम पैदा करता है।

$xml = $((new DOMParser).parseFromString(xml, "text/xml")); 

http://jsfiddle.net/ExplosionPIlls/2MJt9/

संपादित करें: अन्य उत्तर के आधार पर, $.parseXML संभवतः एक बेहतर विकल्प है क्योंकि यह अन्य ब्राउज़रों के साथ काम करना चाहिए, लेकिन आप के बाद से ऊपर के लिए इसी तरह से इसका इस्तेमाल करने के लिए होगा परिणाम एक jQuery ऑब्जेक्ट की बजाय एक XML दस्तावेज़ है।

$xml = $($.parseXML(xml)); 
+0

आप सही हैं, मैं पूरी तरह से '$() '' $ (parseXML() 'के आसपास अतिरिक्त कॉल भूल गया। मैंने अपना जवाब अपडेट किया, हेड-अप के लिए धन्यवाद :) –

3

मुनाफे:

xmlDoc.getElementsByTagName("content")[0].childNodes[0].nodeValue 

काम कर कोड से इस स्निपेट एक्सएमएल लोड करने के लिए jQuery का उपयोग करता है और उसके बाद सामग्री टैग के 4 घटना (जो CDATA शामिल हैं) से

var req = new AjaxRequest(); 
req.setMethod("POST"); 
... 
req.loadXMLDoc(linkString, paramString); 
var htmlContent = req.getResponse().responseXML.getElementsByTagName('content').item(3).childNodes[0].nodeValue; 
0

पाठ हो जाता है JQuery में सीडीएटीए को बच्चे के पहले प्राप्त करके पुनर्प्राप्त किया जा सकता है कोड:

!$.ajax(YOUR_URL,{ 
dataType: 'xml', 
success: function (dataR, textStatus, jqXHR){ 
var rrsobj = $(dataR).find('rss'); 
if(rrsobj){ 
    desc = $(rrsobj [0]).children('content'); 
    if(desc) 
    var txt = desc[0].childNodes[0].data; } 
}}); 

जहां डेटाआर को YOUR_URL से पढ़ा गया था और txt में सीडीएटीए

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