java, جاوا, فایل در جاوا

خواندن فایل xml در جاوا (Read XML File)

خواندن فایل xml در جاوا

در این جلسه، تیم کدگیت را با آموزش خواندن فایل xml در جاوا همراهی کنید. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با فایل در جاوا
  2. آشنایی با for در جاوا
  3. مدیریت استثناها در جاوا
  4. آشنایی با متد

Xml

ایجاد فناوری اکس‌ام‌ال یا زبان نشانه‌گذاری گسترش‌پذیر (eXtensible Markup Language) را باید بدون تردید یکی از بزرگ‌ترین و اساسی‌ترین گامهایی به حساب آورد که در مسیر حلّ مشکل اندازه پذیری در اینترنت مدرن برداشته شده‌است. اکس‌ام‌ال ویرایشی از اس جی‌ام‌ال است که می‌کوشد فاصله بین سادگی اچ‌تی‌ام‌ال و قدرت اس جی‌ام‌ال پل بزند. در واقع اکس‌ام‌ال زیر مجموعه‌ای از اس جی‌ام‌الاست که صرفاً برای استفاده با وب طراح شده است. پس از ایجاد اکس‌ام‌ال توسّط کنسرسیوم وب جهانگیر (W3C) در سال ۱۹۹۶ (میلادی)، دست‌اندرکاران بسیاری از پروژه‌هایمحاسبات توزیع‌شده به استفاده گسترده از آن روی آوردند.

در حال حاضر، گوناگونی، میزان، و ابعاد فراوان به‌کارگیری اکس‌ام‌ال در اغلب زمینه‌ها و ساختارهای اینترنت امروزین به راستی شگفت‌آور است. فقط به عنوان نمونه، باید یادآور شد که تقریباً تمامی فناوری‌های خدمات وب، گرافیک برداری اندازه پذیر، آردی‌اف، و بسیاری از موارد دیگر، تنها با اکس‌ام‌ال انجام‌پذیر است.

چرایی و چگونگی این امر برای فهم آسانتر و درک همه‌جانبه‌تر اینترنت در حال حاضر، و به ویژه، جهت آشنایی با تدابیری که بشر برای هموار نمودن راه‌های گسترش آن در آینده اتّخاذ خواهد کرد، از اهمّیّت بالایی برخوردار است(ویکیپدیا)

مدل شی گرای سند

مدل شیءگرای سند یا دام (DOM – Document Object Model)  عنوان یکی از دو ساختوارۀ (architecture) اصلی است (در کنار اس‌اِی‌اکس ) که بر اساس آن سندهای اکس‌ام‌ال را به اشیایی که در بردارنده آن است، تجزیه نموده، و آن‌ها را به‌صورت یک ساختار درختی داده‌ها در فضای حافظه اصلی پهن می‌کند. ساختوارۀ دام، نه به زبان برنامه‌نویسی خاصّی وابستگی دارد و نه به سکّوی برنامه‌نویسی ویژه‌ای، بلکه، به منظور اجراء و پیاده‌سازی آن باید از یکزبان برنامه‌نویسی بلندتراز همچون جاوا، سی‌شارپ، جاوااسکریپت یا مشابه آن‌ها سود بجوییم. آنسوی رابط کاربر سند با مدلی شیءگرا نمایانده می‌شود(ویکیپدیا).

خواندن فایل xml در جاوا

برای خواندن فایل xml در جاوا ما از کتابخانه Dom استفاده میکنیم. این کتابخانه در خود جاوا است و نیازی به اضافه کردن آن نیست.حال مراحل خواندن فایل xml در جاوا به صورت زیر است:

  1. کتابخانه های مرتبط را import کنید.
  2. یک Document از فایل xml خود بسازید
  3. عناصر ریشه فایل خود را بخوانید.
  4. سپس متغیر های درونی هر قسمت را بخوانید.

برای خواندن فایل xml در جاوا ما از فایل زیر استفاده میکنیم:

<?xml version="1.0"?>
<class>
   <student rollno="393">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </student>
   <student rollno="493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>vinni</nickname>
      <marks>95</marks>
   </student>
   <student rollno="593">
      <firstname>jasvir</firstname>
      <lastname>singn</lastname>
      <nickname>jazz</nickname>
      <marks>90</marks>
   </student>
</class>

حال برای خواندن فایل xml در جاوا کد زیر را باید زد:

public static void main(String[] args){

                try {  
                   File inputFile = new File("xmlfile.xml");
                   DocumentBuilderFactory dbFactory
                      = DocumentBuilderFactory.newInstance();
                   DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                   Document doc = dBuilder.parse(inputFile);
                   doc.getDocumentElement().normalize();
                   System.out.println("Root element :"
                      + doc.getDocumentElement().getNodeName());
                   NodeList nList = doc.getElementsByTagName("student");
                   System.out.println("----------------------------");
                   for (int temp = 0; temp < nList.getLength(); temp++) {
                      Node nNode = nList.item(temp);
                      System.out.println("\nCurrent Element :"
                         + nNode.getNodeName());
                      if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                         Element eElement = (Element) nNode;
                         System.out.println("Student roll no : "
                            + eElement.getAttribute("rollno"));
                         System.out.println("First Name : "
                            + eElement
                            .getElementsByTagName("firstname")
                            .item(0)
                            .getTextContent());
                         System.out.println("Last Name : "
                         + eElement
                            .getElementsByTagName("lastname")
                            .item(0)
                            .getTextContent());
                         System.out.println("Nick Name : "
                         + eElement
                            .getElementsByTagName("nickname")
                            .item(0)
                            .getTextContent());
                         System.out.println("Marks : "
                         + eElement
                            .getElementsByTagName("marks")
                            .item(0)
                            .getTextContent());
                      }
                   }
                } catch (Exception e) {
                   e.printStackTrace();
                }
             }

همانطور که در کد خواندن فایل xml در جاوا  میبینید ابتدا فایل xml خود را درون متغیر inputfile ریختیم.

File inputFile = new File("xmlfile.xml");

Documentbuilder و  Document را ساختیم.

                 DocumentBuilderFactory dbFactory
                      = DocumentBuilderFactory.newInstance();
                   DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                   Document doc = dBuilder.parse(inputFile);

سپس لیستی از تمام Element های فایل را گرفتیم و آنها را در یک for چاپ کردیم.(حلقه for در کد بالا)

خروجی کد خواندن فایل xml در جاوا به صورت زیر است:

Root element :class
----------------------------
Current Element :student
Student roll no : 393
First Name : dinkar
Last Name : kad
Nick Name : dinkar
Marks : 85
Current Element :student
Student roll no : 493
First Name : Vaneet
Last Name : Gupta
Nick Name : vinni
Marks : 95
Current Element :student
Student roll no : 593
First Name : jasvir
Last Name : singn
Nick Name : jazz
Marks : 90

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *