Transcript Xerces
Xerces
The Apache XML Project
Yvonne Yao
Introduction
Set of libraries that provides functionalities
to parse XML documents
Promotes the use of XML
Why?
Two types of parsers
DOM (Document Object Model) parsers
SAX (Simple API for XML) parsers
DOM & SAX
DOM
Implements the DOM API
Creates a DOM tree in memory
Good for small XML files, or traverse the document
back and forth
SAX
Implements SAX API
Event driven interface
Good for huge XML files
Xerces
Implements both DOM and SAX parsers
3 subprojects
Xerces C++
Xerces Java
Xerces Perl
Xerces C++
Current version 2.7.0
Provides functionalities to read, write,
parse, and validate XML documents
Conforms with
XML 1.0 and XML 1.1
SAX 1.0 and SAX 2.0
DOM Level 1 and 2
Xerces Perl
Current version 2.7.0
Implemented using the Xerces C++ API
Provides access to most of the C++ API, except
Functions in the C++ API which have better Perl
counterparts (such as file I/O), or
Functions that manipulate internal C++ information
that has no role in the Perl module
Conforms to the same set of Standards as
Xerces C++
Xerces Java
Xerces Java
Current version 1.4.4
Conforms with
XML 1.0
SAX 1.0 and 2.0
DOM Level 2
Xerces2 Java
Current version 2.9.0
Includes Xerces Native Interface, a new framework
for building parser components and configurations
Example 1 - DOM
<?xml version="1.0" encoding="UTF-8"?>
<Personnel>
<Employee type="permanent">
<Name>Seagull</Name>
<Id>3674</Id>
<Age>34</Age>
</Employee>
<Employee type="contract">
<Name>Robin</Name>
<Id>3675</Id>
<Age>25</Age>
</Employee>
<Employee type="permanent">
<Name>Crow</Name>
<Id>3676</Id>
<Age>28</Age>
</Employee>
</Personnel>
Example 1 - DOM
Create a DOM object
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
DocumentBuilder db =
dbf.newDocumentBuilder();
dom = db.parse("employees.xml");
Get a list of employee elements from DOM
Element docEle = dom.getDocumentElement();
NodeList nl =
docEle.getElementsByTagName("Employee");
Get node value from element
element.getFirstChild().getNodeValue();
Example 2 - SAX
SAX parsing is event based modeling, it calls a
tag handler whenever it encounters a tag
public void startElement(String uri,
String localName, String qName,
Attributes attributes)
public void endElement(String uri, String
localName, String qName)
Example 2 - SAX
Create a SAX parser
SAXParserFactory spf =
SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
sp.parse("employees.xml", this);
Create Employee object when <Employee> is found
if(qName.equalsIgnoreCase("Employee"))
tempEmp = new Employee();
Set Employee properties when an end tag is found
if (qName.equalsIgnoreCase("Name"))
tempEmp.setName(tempVal);
Thank You