2010-06-30 78 views
2

我已經從一個輸入值這內容:解析內容如XML,與jQuery

var xml_url = $("input").val(); 
alert(xml_url); 

輸出:

<trans> 
    <result> 
     <item1>1</item1> 
     <item2>content</item2> 
     <item3>NA</item3> 
     <item4>0</item1> 
    </result> 
</trans> 

的結構是作爲XML文件。我想獲得這些數據。

我有這樣的代碼:

<script language="javascript"> 
    $(document).ready(function(){ 
     var xml_url = $("input").val(); 
      $(xml_url).find("result").each(function() 
      {   
      alert($(this).find("item3').").text()); 
      }); 
    }); 
</script> 

它工作正常,在Firefox,而不是在IE7/8。

有什麼建議嗎? 非常感謝。

+1

什麼是'xml'變量保持和'找到( 「項目3' ))' - 你確定這個工程在Firefox,和你沒」。」 t意味着'find(「item3」)'? – Anurag 2010-06-30 18:16:22

+1

「$(xml).find」 這應該是xml_url嗎? – heisenberg 2010-06-30 18:18:00

+0

這是一個打字錯誤,沒有什麼與此,在Firefox的 – AlexC 2010-06-30 18:39:44

回答

2

永遠不要依賴jQuery解析XML。

使用合適解析器來完成這項工作,然後使用jQuery找到所需的節點。您提供的示例適用於Firefox,但不適用於Chrome,Safari或IE。下面的函數將從一個字符串構造一個XML文檔。

function parseXML(text) { 
    var doc; 

    if(window.DOMParser) { 
     var parser = new DOMParser(); 
     doc = parser.parseFromString(text, "text/xml"); 
    } 
    else if(window.ActiveXObject) { 
     doc = new ActiveXObject("Microsoft.XMLDOM"); 
     doc.async = "false"; 
     doc.loadXML(text); 
    } 
    else { 
     throw new Error("Cannot parse XML"); 
    } 

    return doc; 
} 

用途爲:

// Parse and construct a Document object 
var xml = parseXML(xml_url); 

// Use jQuery on the object now 
$(xml).find("result").each(function() 
{ 
    alert($(this).find("item3").text()); 
});