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

+0

пробовал, что ничего не выводил – user244394

+0

да это действительно xml, я оставил его здесь – user244394

ответ

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

+0

Я думаю, что я нашел проблему, пожалуйста, проверьте мой ответ, если он прав :-) – Valky

+0

Эй, что сработало спасибо – user244394

Смежные вопросы