2012-02-18 58 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