これについて多くの質問が寄せられていることは承知していますが、アドバイスに従いましたが、xml/jQuery ファイルから非常に具体的で一見一貫性のない動作がまだ得られます。質問に入る前に、ここに私の jQuery を示します。
$(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>
今私がやろうとしているのは、タイトル、firstName、および lastName ノードからテキストを取得し、それらを div 内の div に追加することです。
currentXMLObjects[x].childNodes[1のインデックス「1」を使用して各「タイトル」のテキストを取得できることに気付くまで、.childNodes[0]、firstChild、およびnodeValueのさまざまな配置を試して、しばらく時間がかかりました]... 問題は、firstName ノードと lastName ノードにアクセスできないようです。私は考えることができるすべてのアレンジメントを試しました:
currentXMLObjects[x].childNodes[1].childNodes[1].nodeValue は、次のように null エラーをスローします: currentXMLObjects[x].childNodes[0].childNodes[1].nodeValue
currentXMLObjects[x].childNodes[1].nodeValue は「null」を返し、追加します。
currentXMLObjects[x].childNodes[2].nodeValue は何も追加しません。
同様に、中間の 'childNodes[n]' がない組み合わせは、null を返すか、何も返しません。
ここで何が起こっているかについて手がかりを持っている人はいますか?「タイトル」ノードが XML 内で非常に深くネストされているように見えることに驚きました。「appendNewContainers」関数に送信される nodeList は、すでにドリルダウンされています。しかし、「レベル」要素の子ノードを探すことは、浅い深さでは機能しません。
どんな助けでも大歓迎です。乾杯。