簡體   English   中英

XML在jquery中格式不正確

[英]XML is not well-formed in jquery

我已經調用了ajax函數,該函數從格式如下的xml文件中收集數據

<?xml version="1.0" encoding="utf-8"?>
<values>     
  <value date="2015-07-12">37.170</value>
  <value date="2015-07-13">7.190</value>
  <value date="2015-07-12">37.170</value>
  <value date="2015-07-12">3.210</value>
  <value date="2015-07-12">37.20</value>
</values>

當我從控制台獲得響應時,它說格式不正確:1:80

不知道這意味着什么,因為當我使用xml驗證器時,它們都告訴我沒有錯誤。 任何幫助都會很棒。

        var data = [];
    $.ajax({
        url: 'test.xml', // name of file you want to parse
        dataType: "xml", // type of file you are trying to read
        success: parse, // name of the function to call upon success
        async:    false,
        error: function(xhr, status, error) {
              alert(xhr.responseText);
              console.log("readyState: " + xhr.readyState);
                console.log("responseText: "+ xhr.responseText);
                console.log("status: " + xhr.status);
                console.log("text status: " + textStatus);
                console.log("error: " + err);
        }
    });

    function parse(xml) {
        var items = jQuery(xml).find("values");
        var data = [];
        var values = $(items).text();
        $(document).find("Values").each(function () {
            $(this).find("value").each(function () { data.push($this.text);});
        });
        console.log(data.length);
    }

不知道如何將所有值都放入數組。

編輯!

小提琴已更新。

http://jsfiddle.net/b62tx8Ln/1/

無需使用parseXML解析數據。

Erik Phillips可能對雙重解析是正確的。 無論如何,這應該可行。

注意在提琴中使用ECHO .....只是為了模擬本地xml文件。

 $.ajax({
        url: 'test.xml', // name of file you want to parse
        dataType: "xml", // type of file you are trying to read
        success: parse, // name of the function to call upon success
        async:    false,
        error: function(xhr, status, error) { 
            alert("error");
        }
    });

    function parse(xmldata) {
        $(xmldata).find("value").each(function(){
            alert($(this).text());
        });
    }

您可能會嘗試根據文檔將其解析兩次:

您期望從服務器返回的數據類型。 如果未指定,則jQuery將嘗試根據響應的MIME類型來推斷它(XML MIME類型將產生XML,在1.4中,JSON將產生JavaScript對象,在1.4中,腳本將執行該腳本,而其他所有內容將是以字符串形式返回)。

因此,我在想這就是您要尋找的東西:

function parse(xml) {
  //var items = jQuery(xml).find("values");
  var items = xml.find("values");
  var data = [];
  var values = $(items).text();
  $(document).find("Values").each(function () {
    $(this).find("value").each(function () { data.push($this.text);});
  });
  console.log(data.length);
}

對於在解析IE中格式不正確的(自關閉標簽)xml時遇到問題的其他任何人, $(xmlthing).find('nodename').each...可以工作,而IE可以解析$(xmlthing).children('nodename').each... (在FF和Chrome中很好用),嵌套。

那是:

<thing /> <thing /> <thing />

在FF / Chrome中將是3件事,但是在IE中,如果您使用$(node).children(thing)

$(node).find(thing)將在所有瀏覽器中為您提供3件東西。 謝謝@Steen

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM