[英]access to a xml file nodes?
我有一個這樣的xml文件
<root>
<section>
<state>state one</state>
<ct>
<city>first city</city>
<city>second city</city>
<city>third city</city>
</ct>
</section>
</root>
而且我想訪問jquery中的城市名稱...我已經嘗試過s.th像這樣:
var x;
var ct = "";
for(i=1 ; 1=3 ; i++){
x = xmlDoc.getElementsByTagName('ct')[0].childNodes[i].childNodes[0].nodeValue;
ct += x;
}
$('div').html(ct);
但是,我只有第一個城市....而我無法訪問第二和第三個..這樣的代碼:
x = xmlDoc.getElementsByTagName('ct')[0].childNodes[2].childNodes[0].nodeValue;
什么都不給我!
自從您提到jQuery以來,您可以使用$.parseXML
將XML解析為XML文檔,使用$()
獲取該文檔的jQuery包裝器, find
city
節點,然后對它們進行所需的處理(例如使用map
獲取其文字):
var doc = $.parseXML( '<root>' + '<section>' + '<state>state one</state>' + '<ct>' + '<city>first city</city>' + '<city>second city</city>' + '<city>third city</city>' + '</ct>' + '</section>' + '</root>' ); var cities = $(doc).find("city"); var cityNames = cities.map(function() { return $(this).text(); }).get(); console.log(cityNames);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
( get
后map
轉換jQuery的包裝, map
返回到普通數組)。
我們在find
使用的選擇器可以更具體。 例如,您專門在ct
容器中尋找city
元素; 如果那很重要,我們的find
選擇器應該是ct > city
而不是city
:
var doc = $.parseXML( '<root>' + '<section>' + '<state>state one</state>' + '<ct>' + '<city>first city</city>' + '<city>second city</city>' + '<city>third city</city>' + '</ct>' + '</section>' + '</root>' ); var cities = $(doc).find("ct > city"); var cityNames = cities.map(function() { return $(this).text(); }).get(); console.log(cityNames);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
您在<ct>
元素內看到多少個childNodes
? 最可能是3。實際上,那里有7個childNodes
。 其中三個是您的<city>
元素,另外四個是由xml標記之間的空格(空格,換行符,回車符)組成的文本節點。
您應該使用返回元素數組而不是節點數組的函數(例如,getElementsByTagName)。
var cities = xmlDoc.getElementsByTagName('ct')[0].getElementsByTagName('city');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.