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.