در این قسمت می خواهیم درباره ی تکثیر کردن نودها صحبت کنیم. مثالهای این صفحه بر پایه فایل books.xml می باشند
کپی کردن node
متد cloneNode برای ایجاد یک کپی از node مشخص شده بکار می رود
این متد یک پارامتر دارد که می تواند true یا false باشد
این مقدار مشخص می کند که ایا کپی گرفته شده از node مورد نظر به همراه صفتها و node های فرزند ان باشد یا نه
مثال
قطعه برنامه زیر از اولین تگ book که در فایل books.xml قرار دارد یک کپی می گیرد
و سپس کپی انرا به تگ ریشه فایل books.xml می افزاید
قبلا گفتم منظور از تگ ریشه همان تگی است که تمام تگ های دیگر فایل xml ما در ان قرار دارد
در فایل books.xml تگ bookstore می شود تگ ریشه
xmlDoc=loadXMLDoc(“books.xml”);
oldNode=xmlDoc.getElementsByTagName(‘book’)[0];
newNode=oldNode.cloneNode(true);
xmlDoc.documentElement.appendChild(newNode);
//Output all titles
y=xmlDoc.getElementsByTagName(“title”);
for (i=0;i<y.length;i++)
{
document.write(y[i].childNodes[0].nodeValue);
document.write(“
“);
}
خط اول :
اشاره گری به نام xmldoc به فایل books.xml اشاره می کند
خط دوم :
oldNode=xmlDoc.getElementsByTagName(‘book’)[0];
اشاره گری به نام oldnode به اولین تگ book از فایلی که xmldoc به ان اشاره می کند اشاره خواهد کرد
خط سوم :
newNode=oldNode.cloneNode(true);
از خود و صفات و فرزندان node ای oldnode به ان اشاره می کند یک کپی می گیرد و اشاره گری به نام newnode به ان اشاره می کند
خط چهارم :
xmlDoc.documentElement.appendChild(newNode);
گفتم که عبارت documentElement یعنی تگ ریشه
پس node جدید که حاصل کپی است به انتهای تگ ریشه فایل books.xml اضافه می شود
خط پنجم :
y=xmlDoc.getElementsByTagName(“title”);
در این دستور اشاره گری به نام y بصورت ارایه به تمام تگ های titile فایل books.xml ایجا د می شود
خط ششم :
for (i=0;i<y.length;i++)
به ازای تمام خانه های y یعنی برای تمام تگ های titile ، دستورات داخل حلقه تکرار می شود
خط هشتم
document.write(y[i].childNodes[0].nodeValue);
مقدار اولین node فرزند i امین تگ title نشان داده می شود
( قبلا توضیح داده ام که مقدار متنی مستقیما مقدار متنی تگ title نیست
بلکه خودش یک node از نوع متن است که فرزند title است و شما باید مقدار این node متنی را بخوانید و استفاده کنید )
و از طرفی اگر فایل books.xml را نگاه کرده باشید تگ title یک فرزند دارد و ان هم nide متنی با اندیس صفر است
خروجی برنامه بالا :
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
Everyday Italian