簡體   English   中英

XML API子函數返回函數?

[英]XML API Children Return Function?

我正在對返回XML的控制器執行API調用。 輸出是:

<ArrayOfreport_overallTime>
    <report_overallTime>
        <label>United States</label>
        <value>65</value>
    </report_overallTime>
    <report_overallTime>
        <label>United Kingdom</label>
        <value>58</value>
    </report_overallTime>
    <report_overallTime>
        <label>Germany</label>
        <value>30</value>
    </report_overallTime>
    <report_overallTime>
        <label>India</label>
        <value>65</value>
    </report_overallTime>
    <report_overallTime>
        <label>Russia</label>
        <value>65</value>
    </report_overallTime>
    <report_overallTime>
        <label>Germany</label>
        <value>30</value>
    </report_overallTime>
</ArrayOfreport_overallTime>

這是從以下C#控制器代碼生成的:

public class report_overallTimeController : ApiController
{
    public void report_overallTime(HttpContext context)
    {
        var request = HttpContext.Current.Request;
        var settings = Properties.Settings.Default;
        GetAllItems();
    }

    report_overallTime[] items = new report_overallTime[]
    {
        new report_overallTime { label = "United States", value = "65" },
        new report_overallTime { label = "United Kingdom", value = "58" },
        new report_overallTime { label = "Germany", value = "30" },
        new report_overallTime { label = "India", value = "65" },
        new report_overallTime { label = "Russia", value = "65" },
        new report_overallTime { label = "Germany", value = "30" }
    };

    public IEnumerable<report_overallTime> GetAllItems()
    {
        return items;
    }       
}

在我的jQuery中,我試圖獲取標簽/值對並將它們插入到數組中。

function initChart(xml) {
    var data = [];
    //alert((new XMLSerializer()).serializeToString(xml));
    $(xml).find('ArrayOfreport_overallTime report_overallTime').each(function (index) {
        var label = $(this).children("label").text;
        var value = $(this).children("value").text;
        data.push([label, parseFloat(value)]);
    });
    //Do something with data...
}

當我嘗試輸出var label的值時,我在警報上得到以下信息:

function(a) {
    return Y(this, function(a) {
        return void 0 === a ? n.text(this) : this.empty().append((this[0] && this[0].ownerDocument || d).createTextNode(a))
    }, null, a, arguments.length)
}

我究竟做錯了什么? 我期待着這個國家的警報。

問題是因為ArrayOfreport_overallTime元素是XML字符串的根,因此您需要使用filter()來檢索它,然后使用find()來獲取report_overallTime 您還可以使用map()來構建數組。 嘗試這個:

 var xml = '<ArrayOfreport_overallTime><report_overallTime><label>United States</label><value>65</value></report_overallTime><report_overallTime><label>United Kingdom</label><value>58</value></report_overallTime><report_overallTime><label>Germany</label><value>30</value></report_overallTime><report_overallTime><label>India</label><value>65</value></report_overallTime><report_overallTime><label>Russia</label><value>65</value></report_overallTime><report_overallTime><label>Germany</label><value>30</value></report_overallTime></ArrayOfreport_overallTime>'; var data = $(xml).filter('ArrayOfreport_overallTime').find('report_overallTime').map(function() { var $el = $(this); return [[$el.children("label").text(), parseFloat($el.children("value").text())]]; }).get(); console.log(data); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

暫無
暫無

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

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