XML Light



XMLLight based on a concept of XML elements. XMLLight Element represents any element in XML document, including the root element. An element is a pair of identically named start and end tags. (<text> and </text>). XML element has a name and it may have attributes and a content. Here is a sample of an element "text", with content "Text goes here." and attribute "language" with value "English":
    <text language="English">
        Text goes here.
A slash (/) in the end of start tag means that this element does not have a content and it is closed: <text language="English"/>.

1. Read XML document (ReadXMLDocument.java)

Simple demonstration how to read XML document using XMLLight library. Output is on System.out (console).

    // need to clear comments in input document!
    String clearDoc = XMLLight.clearComments(doc);

    // reading root element.
    Element elemRoot = XMLLight.getElem(clearDoc);
    // In this example we did not specify the element name
    // but we can read element using it's name:
    // Element elemRoot = XMLLight.getElem(clearDoc, "PERIODIC_TABLE");

    // check that Element exists in XML document
    if (elemRoot.isNull())
      System.out.println("Null Element");

    // reading element name
    System.out.println("Root Element name = " + elemRoot.getName());

            // reading element 
            // Please note that new Element class created
            // each time you call method getElem()
    Element elemAtom = elemRoot.getElem("ATOM");
    while (!elemAtom.isNull())
              // reading elements 
      Element elemName   = elemAtom.getElem("NAME");
      Element elemWeight = elemAtom.getElem("ATOMIC_WEIGHT");
      Element elemNumber = elemAtom.getElem("ATOMIC_NUMBER");

                                      // reading element content
      System.out.println("Atom name = '" + elemName.getText() +
                                   // reading attribute with default value N/A
                         "'   State = " + elemAtom.getAttr("STATE", "N/A" ) +
                         "   Weight = " + elemWeight.getText() +
                         "   Number = " + elemNumber.getText());

      // reading next element  from current position
      // Current position for Element elemRoot is the end of
      // last extracted element. See documentation on getPosition()
      // metod for more info.
      elemAtom = elemRoot.getElem("ATOM");
As a result the file 'ReadXMLDocument.xml' parsed and requested data of preiodic table printed. This example included in download package.

2. Create XML document (CreateXMLDocument.java)

Simple demonstration how to create XML document using XMLLight library. Result document (see sample below) has 10 Elements <book>, each containing 100 Elements <chapter>.

    // create root element of XML document
    Element elemDocument = new Element("document");
    // create 10 books in the root Element
    for (int j = 1; j <= 10; j++)
      // create book element
      Element elemBook = new Element("book");
      // set attributes
      elemBook.setAttr("title", "Java & XML Programming. Part " + j);
      elemBook.setAttr("author", "J. Smith");

      // create 100 chapters for each book with attribute 'title'
      // and text sample as a content
      for (int i = 1; i <= 100; i++)
        Element elemChapter = new Element("chapter");
        elemChapter.setAttr("title", ("Chapter " + i));
        elemChapter.addText("Here is a text with entities: &'\"<> And more text... \n");

        // add chapter Element to the book Element

      // add book Element to the root Element
    // create XML document from the root Element
    String xmlDocument = XMLLight.getXMLDocument(elemDocument);
As a result the file 'CreateXMLDocument.xml' with more then 1000 Elements created in working directory. You can see this file in Microsoft Internet Explorer (v.4 or newer) or using any XML editing program. This example included in download package.

3. Parse XML document (ParseXMLDocument.java)

Simple demonstration how to parse XML document using XMLLight library. Output is on System.out (console). Please note that slow speed is because of the output assigned to the console. Try to comment "System.out.println()" to see the real speed!

  // Reqursively parses the Element
  static void parseElement(Element elem)
    System.out.println("Parse element: " + elem.getName());

    // Gets all attributes
    Properties attr = elem.getAttributes();
    for (Enumeration e = attr.keys(); e.hasMoreElements() ;)
      String key = (String) e.nextElement();
      String val = attr.getProperty(key);
      System.out.println("    Attribute: " + key + " = " + val);

    // Gets full text of the Element
    // To read mixed content use Element.getText()
    System.out.println("    Text:");

    // Find all Sub Elements
    Element subElem = elem.getElem();
    if (!subElem.isNull())
      System.out.println("     SubElements of Element: " + elem.getName());
      while (!subElem.isNull())
        subElem = elem.getElem();

    System.out.println("Done  element: " + elem.getName());
As a result the file 'ReadXMLDocument.xml' parsed and all Elements, Attributes and Text are printed. This example included in download package.

4. Read large XML document (ReadLargeXMLDoc.java)

This example shows how XMLLight works with large XML Document. Processed XML dociument is "The Old Testament". The size of the document is about 3.5 MB and it has more then 50,000 tags. The program extracts document title and each book from the document and prints short and long name of the book. For each book program extracts all chapters and prints the title of each chapter. With JDK 1.2 and computer Pentium III 450 MHz all takes less then 1 sec.

    // get the root element
    Element elem = XMLLight.getElem(doc);
    if (elem.isNull())
      System.out.println("null document");
      out.println("null document");

    out.println("Document title = '" + elem.getElem("coverpg").getElem("title").getText() + "'");

    // get element <book>
    Element elemBook = elem.getElem("book");
    while (!elemBook.isNull())
      out.println("Book. Short name = '" + elemBook.getElem("bktlong").getText() +
                      "' Long name = '" + elemBook.getElem("bktshort").getText() + "'");

      // get element <chapter>
      Element elemChapter = elemBook.getElem("chapter");
      while (!elemChapter.isNull())
        out.println("chapter = '" + elemChapter.getElem("chtitle").getText() + "'");
        elemChapter = elemBook.getElem("chapter");

      elemBook = elem.getElem("book");
As a result the file 'ReadLargeXMLDoc.txt' created containing all output information. This example is not included in download package but you can download it here. Please note that size of compressed file is about 1 MB.

back to XMLLight page

More free downloads

Keywords: SoftCorporation LLC., examples, sample, Java, XML, XSL, XML processing, API, Applet, Java language, tag, element, attribute, software, free, download, application, distributed applications, publishing