2013-10-08 48 views
0

我想解析來自www.digiflora.se的XML響應。但是標籤之間的一些文本包含停止解析器的標誌 - &。JavaScript解析與&標誌的遠程XML

由於它不是我的服務器,所以我無法更改生成的XML。而且我不能將其作爲解析的一部分,因爲錯誤在過程中發生得太早。

在調試時,我也對Chrome中的跨域限制(有人說這也延伸到本地存儲的文件)感到困惑。但我認爲下面的例子表明這與此無關。

我將一些有問題的文本粘貼到w3shools示例中。

XML

<?xml version="1.0" encoding="utf-8"?> 
<note> 
<to>Urvalslista f&ouml;r &ouml;rter och ris. &nbsp;&nbsp;</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 

使用Javascript/jQuery的

$.ajax({ 
type: "GET", 
url: "note.xml", 
dataType: "html", 
success: function(xml) { 
$.parseXML(xml); 
} 
}); 

錯誤:

Uncaught Error: Invalid XML: <?xml version="1.0" encoding="utf-8"?> 
<note> 
<to>Urvalslista f&ouml;r &ouml;rter och ris. &nbsp;&nbsp;</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 
jquery-1.10.2.js:516 

繼續:問題的更一般的版本:我嘗試了2個文件。 exampleWithANDAND.xml,exampleWithAND.xml。當我嘗試使用&-sign時,我看不到彈出窗口。當我嘗試沒有&的簽名時,我看到彈出窗口。爲什麼?

exampleWithoutAND.xml:

<?xml version="1.0" encoding="utf-8"?> 
<note> 
<to>Urvalslista </to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 

exampleWithAND.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
<to>Urvalslista & </to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 

並全面javascript代碼:

<!DOCTYPE html> 
<html> 
<head> 
<title>jQuery and XML</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta name="language" content="en" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"</script> 
</head> 

<body 
    <div id="output"></div> 

    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $.ajax({ 

     type: "GET", 
     crossDomain:true, 
     dataType: "xml", 
     //url: "exampleWithoutAND.xml", 
     url: "exampleWithAND.xml", 
     success: function(xml) { 
      alert("!"); 
     } 
     }); 
    }); 

    </script> 

</body> 
</html> 
+0

你能設置jsFiddle嗎? – user10

+0

以前從未嘗試過。我在哪裏把XML文件? – user2857632

+0

我在下面回答。試試看。 – user10

回答

0

變化的數據類型來xml。你不需要解析它。

$.ajax({ 
    type: "GET", 
    url: "svfxml.php.xml", 
    dataType: "xml", 
    success: function(xml) { 
     alert($(xml).find("title").text()) 
    } 
}); 
+0

對不起,我忘了改變這一點。將「html」更改爲「xml」不起作用。如果在xml文件中有&字符,我不能在成功內部執行任何操作:function(xml){}。 – user2857632

+0

它適合我。我更新了我的答案,以檢索具有很多&的標題。它爲我返回「Urvalslista f ö r ö rter och ris。   」。 – user10

+0

發生了什麼事?這管用嗎? – user10