簡體   English   中英

使用 Javascript 獲得唯一的 XML 子節點

[英]using Javascript to get unique XML child nodes

我是一個試圖為我的 Com 構建 map 的菜鳥。 編。 class 與谷歌地圖 API。

我有我想要 output 作為標記和信息窗口的數據。

我從我的數據庫中使用了 Codeigniter 到 output 和 XML。 (為隱私修改數據)

<markers>
    <item0>
        <city>Boston</city>
        <latitude>0.01111</longitude>
        <longitude>1.2345</longitude>
    </item0>
    <item1>
        <city>Los Angeles</city>
        <latitude>9.99999</latitude>
        <longitude>2.00011</longitude>
    </item1>
</markers>

現在我正在嘗試使用 Javascript 來獲取每個“項目”標簽的所有子節點。

我的回調 function:

var xml = data.responseXML;
var items = xml.documentElement.getElementsByTagName("markers");

// for loop iterates through each the child nodes of the "item" tags.

Array.prototype.forEach.call(items, function(markerElem) {
var city = nodeValue(markersElem.children.item[0]);
var point = new google.maps.LatLng(
parseFloat(nodeValue(markersElem.children.item[1])),
parseFloat(nodeValue(markersElem.children.item[2])));
});

主要問題(我相信)是每個“項目”標簽都包含一個唯一的數字,所以我不能用 getElementsByTagName 方法調用它們。

我嘗試修改 items 變量以獲取“標記”標簽的子節點:

var items = xml.documentElement.getElementsByTagName("markers").children;

但是控制台輸出一個錯誤,其中 items 變量現在未定義。

我也嘗試過修改 XML 文件,但我似乎只能通過 Codeigniter 的內置幫助程序 output XML。 也許有一種方法可以在我不知道的 PHP 7 中創建 DOM 文檔?

It will be much easier if you convert XML in your controller with the simplexml_load_string() to a PHP array or object and then use the json_encode() to convert it to JSON format, so it will be much easier to work with this JSON array or JS代碼中的 object。 在您的 controller 中執行此操作並將其發送到您的視圖:

json_encode(simplexml_load_string(your XML here), JSON_UNESCAPED_UNICODE);

我建議您使用XPath因為它允許您將所有元素拉到 cetrain 路徑下,然后您可以正常迭代。

暫無
暫無

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

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