با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسه گذشته در خصوص گره ها و کار با آن ها مطالبی را آموزش دادیم. در ادامه دوره آموزش XML و فصل DOM، آموزش دسترسی به گره ها در DOM را مورد بررسی قرار می دهیم.
می توان از سه طریق به یک گره دسترسی داشت.
روش ()getElementsByTagName تمام عناصر را با یک تگ مشخص می کند.
1 | node.getElementsByTagName("tagname"); |
مثال زیر تمام عناصر <title> زیر عنصر x را باز گردانی می کند.
1 | x.getElementsByTagName("title"); |
توجه داشته باشید که در مثال بالا فقط عناصر <title> زیر گره x باز گردانی می شود.
برای بازگشت همه عناصر <title> در استفاده از سند XML به صورت زیر عمل نمایید:
1 | xmlDoc.getElementsByTagName("title"); |
xmlDoc همان سند است (گره سند).
روش ()getElementsByTagName یک لیست گره را بازگردانی می نماید.
یک لیست گره در واقع یک Array از گره ها است.
1 | x = xmlDoc.getElementsByTagName("title"); |
عناصر <title> در x می توانند از طریق شماره شاخص قابل دسترس باشد.
برای دسترسی به سومین <title> میتوانید این طور بنویسید:
1 | y = x[2]; |
شاخص از ۰ شروع می شود.
در جلسات بعدی با جزئیات بیشتری به لیست گره ها Node List خواهیم پرداخت.
طول ویژگی ها length property در واقع طول یک لیست گره (تعداد گره ها) را نیز مشخص می کند.
می توانید از طریق یک لیست گره با استفاده از property length به Loop کردن بپردازید:
1 2 3 4 5 | var x = xmlDoc.getElementsByTagName("title"); for (i = 0; i <x.length; i++) { // do something for each node } |
ویژگی documentElement سند XML گره ریشه است.
ویژگی nodeName در یک گره، نام گره محسوب می شود.
ویژگی nodeName نیز نوع گره را تعیین می کند.
در جلسات آتی مطالب بیشتری راجع به ویژگی های گره node properties خواهید آموخت.
کد زیر گره های child را که عناصر گره هم محسوب می شوند در ریشه گره می پیچاند و (عمل loop را بر آن اجرا می نماید.)
1 2 3 4 5 6 7 8 9 | txt = ""; x = xmlDoc.documentElement.childNodes; for (i = 0; i <x.length; i++) { // Process only element nodes (type 1) if (x[i].nodeType == 1) { txt += x[i].nodeName + "<br>"; } } |
۱٫فرض کنيد “books.xml” را به xmlDoc بارگذاري کرده ايد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> |
۲٫ گره های کودک عنصر ریشه را دریافت کنید (xmlDoc).
۳٫ برای هر گره child ، نوع گره را بررسی کنید. اگر نوع گره “۱” باشد، یک گره عنصری است.
۴٫ اگر نام گره یک عنصر گره محسوب می شود آن را به عنوان خروجی در نظر بگیرید.
کد زیر با استفاده از روابط گره ها در درخت گره حرکت می کند.
1 2 3 4 5 6 7 8 9 10 11 12 | x = xmlDoc.getElementsByTagName("book")[0]; xlen = x.childNodes.length; y = x.firstChild; txt = ""; for (i = 0; i <xlen; i++) { // Process only element nodes (type 1) if (y.nodeType == 1) { txt += y.nodeName + "<br>"; } y = y.nextSibling; } |
۱٫ فرض کنيد “books.xml” را به xmlDoc بارگذاري کرده ايد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> |
۲٫ گره های child را در اول عنصر book دریافت کنید.
۳٫ متغیر “y” را به عنوان اولین گره child در عنصر book تعیین نمایید.
۴٫ برای هر گره child ( از “y” استفاده نمایید.)
۵٫ نوع گره را بررسی کنید اگر نوع گره “۱” باشد، یک گره عنصری است.
۶٫ اگر نام گره یک عنصر گره محسوب می شود آن را به عنوان خروجی در نظر بگیرید.
۷٫ متغیر “y” را به گره بعدی برده و دوباره از طریق Loop اجرا کنید.
در این جلسه به آموزش دسترسی به گره ها در DOM پرداختیم.
در جلسه بعد فصل آموزش DOM را با کار بر روی اطلاعات گره ها ادامه می دهیم.
با پی وی لرن همراه باشید.