در این قسمت می خواهیم درباره ی دریافت مقدار node صحبت کنیم. فرض کنید تگ زیر را دارم

<price  ab=”ddd” > 123 </price>

در تگ بالا ۳ تا node داریم :

node اول از نوع element یا تگ که همان price است

node دوم از نوع attribute یا صفت که همان ab است و مقدار ان ddd است

node سوم از نوع text است این node فرزند تگ price است  و مقدار ان ۱۲۳ است
( نکته : هیچوقت نگوئید متن بین یک تگ مقدار ان است چون هیچوقت تگ ها مقدار ندارند

بلکه متن درون یک تگ خود یک node است که فرزند ان تگ است و مقدار این node می شود خود همان متن ! )
حالا فرض کنید در یک برنامه html می خواهید مقدار متنی تگ price را استفاده کنید

از ویژگی nodeValue برای دریافت مقدار متنی یک node استفاده می شود

( مقدار در فایل xml از نوع متنی است )

اما برای بدست اوردن مقدار یک صفت از متد زیر استفاده می کنیم :

getAttribute()
دریافت مقدار یک تگ یا همان المنت
در مدل dom ، هر چیزی یک node است و node های از نوع تگ یا همان المنت هیچ مقداری ندارند

متن بین تگ باز و بسته مقدار ان تگ نیست بلکه خودش یک node  فرزند از نوع متنی ،  برای ان تگ است

برای دریافت مقدار متنی موجود در یک تگ ، باید مقدار متنی فرزند متنی ا ن تگ را دریافت کنید !

اگر  متد getElementsByTagName  روی فایل مثلا books.xml اعمال شود انگاه لیستی از node هایی را بر می گرداند که شامل لیستی از تما م تگ هایی است که اسمشان را در پرانتز جلوی این متد مشخص کرده ایم
مثال :

دستورات زیر ابتدا متغیر xmldoc را به فایل books.html اشاره می دهد(البته با تابعی که در فصل اول گفتیم و نام ان loadxmldoc بود )

سپس

اولین تگ با نام title را از ان دریافت می کند

xmlDoc=loadXMLDoc(“books.xml”);

x=xmlDoc.getElementsByTagName(“title”)[0];

در کروشه ، شماره اندیس تگ مورد نظرتان را بنویسید

مثلا اگر فقط سومین تگ title را بخواهید باید در کروشه بنویسید ۲

چون اندیسها از صفر شروع می شوند

اما اگر همه تگ های title را بخواهید کلا کروشه را ننویسید

ویژگی childNodes  لیستی از فرزندان درو ن یک node از نوع المنت را بر می گرداند

در فایل books.html ، تگ  title  فقط یک فرزند دارد و ان هم یک node از نوع متن است

مثال زیر ابتدا اشاره گری به نام x  به اولین تگ title ایجاد می کند

سپس اشاره گری به نام y به اولین فرزند تگ title ایجاد می نماید

x=xmlDoc.getElementsByTagName(“title”)[0];

y=x.childNodes[0];

 اگر تمام فرزندان را بخواهید کروشه را حذف کنید

ویژگی nodeValue  مقدار فرزند node المنت را بر می گرداند

x=xmlDoc.getElementsByTagName(“title”)[0];

y=x.childNodes[0];

txt=y.nodeValue;
مقدار متغیر txt برابر خواهد شد با “Everyday Italian”

دریافت مقدار یک صفت

بر طبق مدل dom ، صفتها یک نوع node  هستند

برخلاف انچه برای node های المنت گفتیم که متن درو ن انها مقدار انها نیست بلکه خودش یک node است و فرزند المنت است

مقدار متنی یک صفت مستقیما مقدار ان صفت است نه فرزند ان صفت

برای دریافت مقدار یک صفت می توانیم از متد getAttribute یا ویژگی nodeValue  استفاده کنیم

از nodevalue به این صورت استفاده می کنیم که مقدار node صفت را مشخص کند مثل انچیزی که برای node های متنی گفتیم عمل کنید

روش استفاده از getAttribute
متد getAttribute مقدار یک صفت را بر می گرداند

فرض کنید در فایل books.xml اولین تگ titile بصورت زیر است

<title lang=”en”>Everyday Italian</title>
حالا می خواهیم دستوراتی بنویسیم که مقدار صفت lang اولین تگ title را بدهد

xmlDoc=loadXMLDoc(“books.xml”);

txt=xmlDoc.getElementsByTagName(“title”)[0].getAttribute(“lang”);

 مقدار متغیر txt برابر en خواهد شد
اگر می خواهید ببینید چگونه می توان با استفاده از یک حلقه به مقدار صفت lang تمام تگ های title دسترسی داشت اینجا کلیک کنید

روش استفاده از getAttributeNode

این متداشاره گری به  صفت مورد نظر ما در فایل xml ایجاد می کند

مثال :

دستورات زیر مقدار متنی صفت lang اولین تگ titile را بر می گرداند

xmlDoc=loadXMLDoc(“books.xml”);

x=xmlDoc.getElementsByTagName(“title”)[0].getAttributeNode(“lang”);

txt=x.nodeValue;

 خط اول :
ایجاد اشاره گر به فایل books.xml
خط دوم :
ایجاد اشاره گری به صفت lang اولین تگ title
خط سوم :
قرار دادن مقدار این صفت که x دارد به ان اشاره می کند در متغیر txt