我知道這已經被問了很多,但是我遵循了這個建議,並且我仍然從我的xml/jQuery文件中看到一些非常具體的,看起來不一致的行爲: 在我開始之前這個問題,這是我的jQuery:始終從XML節點獲取文本
$(document).ready(function() {
var $body = $('body');
var currentXMLObjects;
var $currentXMLContainers = new Array();
var previousXMLObjects;
$body.append("<div id='content'><h3>Staff Organisational Chart</h1></div>");
// Load the xml file using ajax
$.ajax({
type: "GET",
url: "xml/content.xml",
dataType: "xml",
success: function (xml) {
$xml = $(xml);
console.log(xml.children[0]);
appendNewContainers(xml.children[0].children);
}
});
function appendNewContainers(children) {
currentXMLObjects = children;
console.log("currentXMLObjects.length = "+currentXMLObjects.length);
for (var x=0;x<currentXMLObjects.length;x++) {
$currentXMLContainers.push($(currentXMLObjects[x]));
$("#content").append('<div class="container"><div>' + currentXMLObjects[x].childNodes[1].firstChild.nodeValue + '</div><div>' + currentXMLObjects[x].childNodes[1].firstChild.nodeValue + '</div><div>' + currentXMLObjects[x].childNodes[1].firstChild.nodeValue + '</div></div>');
}
}
});
而這裏的XML:
<content>
<level name="first name">
<title>Title 1 Here</title>
<firstName>First Name 1</firstName>
<lastName>Last Name 1</lastName>
<contact>Active</contact>
</level>
<level name="second name">
<title>Title 2 Here</title>
<firstName>First Name 2</firstName>
<lastName>Last Name 2</lastName>
<contact>Active</contact>
</level>
<level name="third name">
<title>Title 3 Here</title>
<firstName>First Name 3</firstName>
<lastName>Last Name 3</lastName>
<contact>Active</contact>
</level>
<level name="fourth name">
<title>Title 4 Here</title>
<firstName>First Name 4</firstName>
<lastName>Last Name 4</lastName>
<contact>Active</contact>
</level>
<level name="fifth name">
<title>Title 5 Here</title>
<firstName>First Name 5</firstName>
<lastName>Last Name 5</lastName>
<contact>Active</contact>
</level>
</content>
現在我想要做的就是從標題的文本,名字和lastName節點和追加他們在divs到一個包含div。
我花了一段時間,試驗了.childNodes [0],firstChild和nodeValue的各種排列,以實現我可以使用currentXMLObjects [x]中的索引'1'獲取每個'標題' .childNodes [1] ...問題是我似乎無法訪問firstName和lastName節點。我已經嘗試了所有我能想到的安排:
currentXMLObjects [X] .childNodes [1] .childNodes [1] .nodeValue拋出一個空的錯誤,一樣: currentXMLObjects [X] .childNodes [0]。的childNodes [1] .nodeValue
currentXMLObjects [X] .childNodes [1] .nodeValue返回並追加 '空',並
currentXMLObjects [X] .childNodes [2] .nodeValue附加任何操作。
類似地,缺少中間'childNodes [n]'的任何組合都返回null或全無。
任何人有任何線索,這裏發生了什麼?我很驚訝'標題'節點似乎深深嵌入在XML中;發送到'appendNewContainers'函數的nodeList已經被深入研究。但是尋找「級別」元素的子節點在較淺的深度不起作用。
任何幫助,非常感謝。 乾杯。
我將'級別'元素嵌套在'級別'元素中,所以我不認爲這種方法可行;我試圖將'當前'深度的'level'元素傳遞給appendNewContainers函數(最終的Web應用程序將代表一個員工層次結構)。所以我無法通過'name'屬性收集元素,因爲所有深度的'level'元素都具有該屬性。 – moosefetcher
如果您可以控制XML,則應該可以向其添加唯一的(數據)屬性以標識特定(範圍)的元素。也許使用json也是一個可行的選擇。 – KooiInc
xml需要儘可能簡單,以便管理員可以維護web應用程序(管理員不會冒犯)。任何想法爲什麼我可以訪問'標題'節點,但不是'firstName'或'lastName'節點? – moosefetcher