2012-02-18 41 views
1

我想解析xml,但它沒有返回任何東西jquery xml解析不起作用

這裏是下面的代碼jquery和xml代碼。有什麼我做錯了嗎?

<script language="javascript"> 

    /* $(document).ready(function() 
    { 
     $.ajax({ 
     type: "GET", 
     url: "view_xml.xml", 
     dataType: "xml", 
     success: function(xml) { parseXml(xml); } 
     }); 
    }); 
    */ 
$(document).ready(function() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "view_xml.xml", 
    dataType: "xml", 
    complete: function(data,status) { parseXml(data.responseXML); } 
    }); 
}); 

function parseXml(xml) 
{ 
    $(xml).find("inst:cView").each(function() 
    { 
    $("#output").append($(this).attr("type") + "<br />"); 
    /* output 
    Disks 
    Disks 

    */ 
    }); 

$(xml).find("inst:field").each(function() 
    { 
    $("#output").append($(this).attr("name") + "-"); 
    $("#output").append(": " + $(this).find("name").text() + "<br />"); 
    /* output 
    TargetObjectClass -:Disk 
    TargetObjectName -:DISK A1 
    DisplayName -:DISK-Name 
    MaxAvgDataRate KB/sec -:50.00 KB/sec 
    MaxAvgQueueDepth -:50.00 
    ... 
    ... 

    */ 
    }); 
} 
</script> 

XML代碼

<?xml version="1.0" encoding="utf-8"?> 
    <entry> 
    ---- 
    ---- 
    <cView type="D1"> 
        <field name="TargetObjectClass">Disk</field> 
        <field name="TargetObjectName">DISK A1</field> 
        <field name="DisplayName">DISK-Name</field> 
        <field name="MaxAvgDataRate KB/sec">50.00 KB/sec</field> 
        <field name="MaxAvgQueueDepth">50.00</field> 
       </cView> 
       <cView type="D2"> 
        <field name="TargetObjectClass">Disk</field> 
        <field name="TargetObjectName">DISK B2</field> 
        <field name="DisplayName"> Disk-Name 2 </field> 
        <field name="MaxAvgDataRate KB/sec">60.00 KB/sec</field> 
        <field name="MaxAvgQueueDepth">60.00</field> 
       </cView> 


    ... 
    </entry> 
+0

不知道,但你有沒有嘗試過使用'xml'而不是'$(xml)'? – Valky 2012-02-18 18:39:26

+0

試過,沒有輸出任何東西 – user244394 2012-02-18 18:43:16

+0

是的,它是有效的xml我把它留在這裏 – user244394 2012-02-18 19:04:26

回答

1

嘗試以下

$(document).ready(function() 
{ 
    $.ajax({ 
    type: "GET", 
    url: "view_xml.xml", 
    dataType: "xml", 
    complete: function(data,status) { parseXml(data.responseText); } 
    }); 
}); 

編輯關於你的XML標籤:

Using data.responseText 
And <cView type="..."> instead of <inst:Cview type="..."> works like a charm. 
The same for <field ...> instead <inst:field ...>. 

由於 「:」 使選擇一些搜索「僞元素」而不是標籤。

所以,最後,你只需要逃跑 ':',這樣的:

$(xml).find("inst\\:cView")... 
$(xml).find("inst\\:field")... 

有關新的XML編輯

要獲取數據的樹狀結構,使用下列內容:

function parseXml(xml) 
{ 
    $(xml).find("cView").each(function() 
    { 
    $("#output").append($(this).attr("type") + "<br/>"); 
    $(xml).find("field").each(function() 
    { 
     $("#output").append($(this).attr("name") + " : "); 
     $("#output").append($(this).text() + "<br/>"); 
    }); 
    $("#output").append("<hr/>"); 
    }); 
} 

每個「字段」的內容是$(this).text();

+0

我試過它沒有工作要麼 – user244394 2012-02-19 00:57:42

+0

我認爲我發現了這個問題,請檢查我的答案,如果它是正確的:-) – Valky 2012-02-19 03:05:15

+0

嘿,那工作謝謝 – user244394 2012-02-20 02:56:53