簡體   English   中英

使用jQuery從XML節點創建數組

[英]Create array from xml nodes using jquery

我正在嘗試將xml文件中的經/緯度點隔離到數組中。 我不願意將lat / lon子節點文本推送到數組。 理想情況下,我希望數組讀為:

點1 = lat1,lon1
點2 = lat2,lon2

這是我到目前為止的內容:

 $.ajax({
        type: "GET",
        url: "points.xml",
        dataType: "xml",
        success: function (xml) {
            //find each TP
            var areaPlots = $(xml).find('plot_area').each(function () {                     $(this).find('area').each(function () {
                    var areas = $(this);
                    $(areas).find('point').each(function () {
                        var points = $(this);
                        $(points).find('lat_num').each(function () {
                          var latitude = $(this).text();    
                        $(points).find('lon_num').each(function () {
                          var longitude = $(this).text();                                                                                                           
                        })
                    })
                })
            })      
             //end of success function
        }

XML:

<plot_area>
 <area>  
  <point>
   <lat_num>42.00861</lat_num> 
   <lon_num>-94.00351</lon_num> 
 </point>
 <point>
  <lat_num>43.00921</lat_num> 
  <lon_num>-89.00024</lon_num> 
 </point>
 <point>
  <lat_num>02.008427</lat_num> 
  <lon_num>-74.99588</lon_num> 
 </point>
 </area>
</plot_area>

如何將每個點的經/緯對推入數組?

也許您可以創建一個對象point ,然后為xml的每個點創建一個屬性'point [n]',並使用counter為其添加一個遞增數字。 然后,第一個屬性的名稱將變為“ point1”。

然后將具有“ lat”和“ lon”值的數組添加到該屬性。

這樣,您可以在像這樣的數組中獲取“ lat”和“ lon”值:

point.point1;
point.point2;
point.point3;

例如:

<script type="text/javascript">
    $.ajax({
        type: "GET",
        url: "points.xml",
        dataType: "xml",
        success: function (xml) {

            var point = {};
            var counter = 1;

            //find each TP
            var areaPlots = $(xml).find('plot_area').each(function () {

                $(this).find('area').each(function () {
                    var areas = $(this);
                    $(areas).find('point').each(function () {
                        var points = $(this);
                        var name = "point" + counter;
                        point[name] = [];

                        $(points).find('lat_num').each(function () {
                            point[name].push($(this).text());
                            $(points).find('lon_num').each(function () {
                                point[name].push($(this).text());
                            });
                        });
                        counter++;
                    });
                    console.log(point.point1);
                    console.log(point.point2);
                    console.log(point.point3);
                });
                //end of success function
            });
        }
    });
</script>

console.log語句將導致:

["42.00861", "-94.00351"]
["43.00921", "-89.00024"]
["02.008427", "-74.99588"]

暫無
暫無

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

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