در این قسمت می خواهیم درباره ی تکثیر کردن نودها صحبت کنیم. مثالهای این صفحه بر پایه فایل 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