Mam taki plik XML:

$ cat moje.xml 
<?xml version="1.0"?>
<company>
        <staff id="1001">
                <firstname>Piotr</firstname>
                <lastname>Mazowiecki</lastname>
                <nickname>PM</nickname>
                <salary>1000</salary>
        </staff>
        <staff id="2001">
                <firstname>Jan</firstname>
                <lastname>Kot</lastname>
                <nickname>KJK</nickname>
                <salary>2000</salary>
        </staff>
</company>

 

Mam taki program:

 
$ cat newSAX1.java 
import javax.xml.parsers.*;
import org.xml.sax.XMLReader;
import org.xml.sax.*;
import org.xml.sax.helpers.*;


class Handler extends DefaultHandler {

  @Override
 public void startElement(String namespaceURI, String localName,String qualifiedName, Attributes att) throws SAXException {
        System.out.println("Znalezione element: " + qualifiedName);
        /*if (qualifiedName.equals("employee")) {
                System.out.println("Znalezione atrybut: " + att.getValue("name"));
        }*/
 }

  @Override
 public void characters(char ch[], int start, int length)
   throws SAXException {

   System.out.println("Treść elementu: " + new String(ch, start, length));
 }

}

public class newSAX1 {
        public static void main(String args[]) throws Exception {
                SAXParserFactory spf = SAXParserFactory.newInstance();
                spf.setNamespaceAware(true);
                SAXParser saxPraser = spf.newSAXParser();
                XMLReader parser = saxPraser.getXMLReader();

                Handler handler = new Handler();
                parser.setContentHandler(handler);
   // Zaczęćie parsowania dokumentu
                parser.parse("moje.xml");
        }
}

Generuje mi coś takiego w konsoli:

$ java newSAX1     
Znalezione element: company
Treść elementu: 

Znalezione element: staff
Treść elementu: 

Znalezione element: firstname
Treść elementu: Piotr
Treść elementu: 

Znalezione element: lastname
Treść elementu: Mazowiecki
Treść elementu: 

Znalezione element: nickname
Treść elementu: PM
Treść elementu: 

Znalezione element: salary
Treść elementu: 1000
Treść elementu: 

Treść elementu: 

Znalezione element: staff
Treść elementu: 

Znalezione element: firstname
Treść elementu: Jan
Treść elementu: 

Znalezione element: lastname
Treść elementu: Kot
Treść elementu: 

Znalezione element: nickname
Treść elementu: KJK
Treść elementu: 

Znalezione element: salary
Treść elementu: 2000
Treść elementu: 

Treść elementu: 
 

Dlaczego powtarzane są Treść elementu, jak mimo, że jest pusty, bo nie istnieje.