Συνήθως η προσπέλαση ενός αρχείου XML μπερδεύει αρχεικά τους περισσότερους που ασχολούνται με τις Java εφαρμογές και την υλοποίηση τους. Παρακάτω θα δώσουμε ένα απλό παράδειγμα για το πως μπορείτε να κάνετε parsing σε ένα XML αρχείο με βάση το DOM tree του.
Βασικά βήματα-εντολές που χρησιμοποιούμε είναι :
1. Import XML-related packages.
2. Create a DocumentBuilder
3. Create a Document from a file or stream
4. Extract the root element
5. Examine attributes
6. Examine sub-elements
Ας δούμε πως:
Import XML-related packages.
Βασικά βήματα-εντολές που χρησιμοποιούμε είναι :
1. Import XML-related packages.
2. Create a DocumentBuilder
3. Create a Document from a file or stream
4. Extract the root element
5. Examine attributes
6. Examine sub-elements
Ας δούμε πως:
Import XML-related packages.
import org.w3c.dom.*; import javax.xml.parsers.*; import java.io.*;Create a DocumentBuilder
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder();Create a Document from a file or stream
StringBuilder xmlStringBuilder = new StringBuilder(); xmlStringBuilder.append("Extract the root element"); ByteArrayInputStream input = new ByteArrayInputStream( xmlStringBuilder.toString().getBytes("UTF-8")); Document doc = builder.parse(input);
Element root = document.getDocumentElement();Examine attributes
//returns specific attribute getAttribute("attributeName"); //returns a Map (table) of names/values getAttributes();Examine sub-elements
//returns specific attribute getAttribute("attributeName"); //returns a Map (table) of names/values getAttributes();Το αρχείο που θέλουμε στην είσοδο να είναι όπως το παρακάτω παράδειγμα:
<?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>Ας δούμε τώρα τον απαιτούμενο κώδικα Java:
package com.tutorialspoint.xml; import java.io.File; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; public class DomParserDemo { public static void main(String[] args){ try { File inputFile = new File("input.txt"); 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(); } } }Το αποτέλεσμα θα είναι της μορφής:
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
Πηγή:tutorialspoint
Δημοσίευση σχολίου