در این قسمت می خواهیم درباره ی نحوه ی حذف کردن node ها صحبت کنیم. متد removeChild برای حذف node مشخص شده بکار می رود
متد removeAttribute برای حذف صفت مورد نظر بکار می رود
حذف کردن یک node
با متد removeChild می توان node مورد نظر را حذف نمود
وقتی node ای را حذف می کنیم ، تمام فرزندان ان node هم حذف می شوند
مثال
قطعه برنامه زیر ، اولین تگ book را از فایل xml بار گذاری شده حذف می کند
xmlDoc=loadXMLDoc(“books.xml”);
y=xmlDoc.getElementsByTagName(“book”)[0];
xmlDoc.documentElement.removeChild(y);
خط اول :
اشاه گری به فایل books.xml به نام xmldoc ایجاد می کند
خط دوم :
اشاره گری به اولین تگ book به نام y ایجاد می کند
خط سوم :
node ای را که Y به ان اشاره دارد را از فایل xml که xmldoc به ان اشاره دارد حذف می کند
مشاهده و اجرای برنامه کامل
حذف کردن خودم
برای حذف کردن node جاری ، تنها راه استفاده از متد removeChild است
زمانی که شما در حال پیمایش node ای هستید که می خواهید انرا حذف کنید ، تنها راه استفاده از ویژگی parentNode و متد removeChild است
مثال
xmlDoc=loadXMLDoc(“books.xml”);
x=xmlDoc.getElementsByTagName(“book”)[0];
x.parentNode.removeChild(x);
خط سوم یعنی از درون والد node ای که x به ان اشاره می کند فرزندش را که همان X به ان اشاره می کند حذف کن !
مشاهده و اجرای برنامه کامل
حذف کردن node متنی
متد removeChild برای حذف node های متنی هم به کار می رود
مثال
xmlDoc=loadXMLDoc(“books.xml”);
x=xmlDoc.getElementsByTagName(“title”)[0];
y=x.childNodes[0];
x.removeChild(y);
خط دوم :
اشاره گری به نام x به اولین تگ titile اشاره دارد
خط سوم :
اشاره گری به نام y به اولین فرزند تگی که x به ان اشاره می کند اشاره دارد (تنها node ای که در titile است همان node متنی است )
خط چهارم :
node ای از x که y به ان اشاره می کند را حذف می نماید
مشاهده و اجرای برنامه کامل
پاک کردن node متنی
از ویژگی nodeValue می توان برای بدست اوردن و نیز پاک کرد ن مقدار یک node متنی استفاده نمود
مثال:
xmlDoc=loadXMLDoc(“books.xml”);
x=xmlDoc.getElementsByTagName(“title”)[0].childNodes[0];
x.nodeValue=””;
خط دوم :
اشاره گری به نام X به اولین فرزند اولین تگ title ایجاد می کند
مقدار این node را پاک یا تهی میکند
مشاهده و اجرای برنامه کامل
برای مشاهده اینکه چطور می توان مقدار تمام node ها ی متنی درون titile ها را با حلقه پاک کرد اینجا کلیک کنید
حذف کردن یک node صفت توسط نام
برای این کار از متد زیر استفاده می کنیم :
removeAttribute(name)
مثلا برای حذف صفت category دستور زیر را داریم :
removeAttribute(‘category’)
مثال
دستورات زیر صفت category را از اولین تگ book حذف می کند
xmlDoc=loadXMLDoc(“books.xml”);
x=xmlDoc.getElementsByTagName(“book”);
x[0].removeAttribute(“category”);
خط دوم :
چون مشخص نکرده ایم چندمین تگ book را می خواهیم لذا ارایه ای به نام x بوجود می اید که هر خانه ان به یکی از تگ های book اشاره می کند
خط سوم :
از تگ book ا ی که اولین خانه X به ان اشاره دارد و حتما اولین تگ book می باشد صفت category اش را حذف می کند
مشاهده و اجرای برنامه کامل
برای مشاهده چگونگی حذف تمام صفتهای category از تمام تگ های book با استفاده از حلقه اینجا کلیک کنید
حذف کردن صفت با شی
از متد
removeAttributeNode(node)
برای حذف صفت با ارسال یک شی node بعنوان پارامترش استفاده می شود
منظور از شی node همان اشاره گری است که به node مورد نظر ایجاد می کنیم
مثال
removeAttributeNode(x)
node صفتی که اشاره گر x به ان اشاره دارد را حذف می کند
مثال
قطعه برنامه زیر تمام صفتهای تمام تگ های book را حذف می کند
xmlDoc=loadXMLDoc(“books.xml”);
x=xmlDoc.getElementsByTagName(“book”);
for (i=0;i<x.length;i++)
{
while (x[i].attributes.length>0)
{
attnode=x[i].attributes[0];
old_att=x[i].removeAttributeNode(attnode);
}
}
خط اول :
ایجاد اشاره گری به نام xmldoc به فایل oks.xml
( در فصلهای اول گفتم که تابع loadXMLDoc یک تابعی است که خودمان دستوراتش را می نویسیم . برای جلوگیری از شلوغ شدن صفحه از نوشتن مجدد دستورات ان جلوگیری می کنم )
خط دوم :
چون مشخص نکرده ایم چندمین تگ book را می خواهیم لذا ارایه ای به نام x بوجود می اید که هر خانه ان به یکی از تگ های book اشاره می کند
خط سوم :
برای تمام خانه های ارایه x دستورات حلقه for انجام می شود
length تعداد خانه های x که هما ن تعداد تگ های book باشد را در خود دارد
اندیس اول صفر است
خط چهارم :
while (x[i].attributes.length>0)
یعنی در صورتیکه i امین تگ book دارای صفت است کارهای درون while را انجام بده
خط پنجم :
attnode=x[i].attributes[0];
اشاره گری به نام attnode به اولین صفت موجود در i امین تگ book ایجاد می کند
خط ششم :
old_att=x[i].removeAttributeNode(attnode);
صفتی که attnode به ان اشاره می کند را از i امین تگ book حذف می کند