我正在尝试解析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 :(得分: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();