SlideShare a Scribd company logo
Java and XML
(DOM, SAX, JDOM)

Raji GHAWI

20/01/2009
Outlines
1.
2.
3.

DOM
SAX
JDOM

20/01/2009

2
1.

DOM

Document Object Model
<inventory>
<book year="2000">
<title>Snow Crash</title>
<author>Neal Stephenson</author>
<publisher>Spectra</publisher>
<isbn>0553380958</isbn>
<price>14.95</price>
</book>
<book year="2005">
<title>Burning Tower</title>
<author>Larry Niven</author>
<author>Jerry Pournelle</author>
<publisher>Pocket</publisher>
<isbn>0743416910</isbn>
<price>5.99</price>
</book>
<book year="1995">
<title>Zodiac</title>
<author>Neal Stephenson</author>
<publisher>Spectra</publisher>
<isbn>0553573862</isbn>
<price>7.50</price>
</book>
<!-- more books... -->
</inventory>

20/01/2009

4
Import required packages

import javax.xml.parsers.*;
import org.w3c.dom.*;

20/01/2009

5
Create the parser
DOM parser factory
try {
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();
// ....
} catch (Exception e) {
e.printStackTrace(System.out);
}

DOM parser

20/01/2009

IOException
ParserConfigurationException
SAXException
6
Parse an XML file

Document document = builder.parse("../inventory.xml");

the entire XML file (as a tree)
(the Document Object Model)

20/01/2009

7
Root element
the root element
Element root = document.getDocumentElement();
System.out.println(root.getTagName());

20/01/2009

8
Nodes
Node

Text

Element

may have children

Attr

leaves
Operations on Nodes

Element

Text

Attr

getNodeName()

tag name

"#text"

name of attribute

getNodeValue()

null

text contents

value of attribute

getNodeType()

ELEMENT_NODE

TEXT_NODE

ATTRIBUTE_NODE

getAttributes()

NamedNodeMap

null

null

20/01/2009

9
Distinguishing Node types

switch(node.getNodeType()) {
case Node.ELEMENT_NODE:
Element element = (Element)node;
...;
break;
case Node.TEXT_NODE:
Text text = (Text)node;
...
break;
case Node.ATTRIBUTE_NODE:
Attr attr = (Attr)node;
...
break;
default: ...
}

20/01/2009

10
Operations on Nodes










getParentNode()
getFirstChild()
getNextSibling()
getPreviousSibling()
getLastChild()
hasAttributes()
hasChildNodes()

20/01/2009

11
Travel through children nodes

if (element.hasChildNodes()) {
Node child = element.getFirstChild();
while (child != null) {
// ....
child = child.getNextSibling();
}
}

20/01/2009

12
Operations for Elements







String getTagName()
boolean hasAttribute(String name)
String getAttribute(String name)
boolean hasAttributes()
NamedNodeMap
getAttributes()

20/01/2009

13
NamedNodeMap





Node getNamedItem(String name)
int getLength()
Node item(int index)
NamedNodeMap map = element.getAttributes();
for (int i = 0; i < map.getLength(); i++) {
Attr attr = (Attr) map.item(i);
System.out.println(attr.getNodeName()
+ "='"+ attr.getNodeValue()+"'");
}

20/01/2009

14
Operations on Texts




String getData()
int getLength()
String substringData(int offset, int count)

20/01/2009

15
Operations on Attrs




String getName()
Element getOwnerElement()
String getValue()

20/01/2009

16
2.

SAX

Simple API for XML
Import required packages

import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;

20/01/2009

18
Create the parser
// Create a parser factory
SAXParserFactory factory = SAXParserFactory.newInstance();
// Tell factory that the parser must understand namespaces
factory.setNamespaceAware(true);
try {
// Make the parser
SAXParser saxParser = factory.newSAXParser();
XMLReader parser = saxParser.getXMLReader();
} catch(Exception e){
e.printStackTrace();
}

20/01/2009

IOException
ParserConfigurationException
SAXException
19
Parse an XML file
// Create a handler
Handler handler = new Handler();
// Tell the parser to use this handler
parser.setContentHandler(handler);
// Finally, read and parse the document
parser.parse("./inventory.xml");

20/01/2009

20
SAX handlers


A callback handler for SAX must implement four interfaces:
 interface ContentHandler
 interface DTDHandler
 interface EntityResolver
 interface ErrorHandler



It is easier to use an adapter class

20/01/2009

21
Class DefaultHandler





DefaultHandler is in package org.xml.sax.helpers
DefaultHandler implements ContentHandler, DTDHandler,
EntityResolver, and ErrorHandler
DefaultHandler is an adapter class




Provides empty methods for every method declared in each of the four
interfaces

To use this class, extend it and override the methods that are
important to your application

20/01/2009

22
The Handler class
class Handler extends DefaultHandler {
// SAX calls this method when it encounters a start tag
public void startElement(String namespaceURI,
String localName,
String qualifiedName,
Attributes attributes) throws SAXException {
System.out.println("startElement: " + qualifiedName);
}
// SAX calls this method to pass in character data
public void characters(char ch[], int start, int length)
throws SAXException {
System.out.println("characters: "" +
new String(ch, start, length) + """);
}
// SAX call this method when it encounters an end tag
public void endElement(String namespaceURI,
String localName,
String qualifiedName) throws SAXException {
System.out.println("endElement: /" + qualifiedName);
}

}
20/01/2009

23
<inventory>
<book year="2000">
<title>Snow Crash</title>
<author>Neal Stephenson</author>
<publisher>Spectra</publisher>
<isbn>0553380958</isbn>
<price>14.95</price>
</book>
<book year="2005">
<title>Burning Tower</title>
<author>Larry Niven</author>
<author>Jerry Pournelle</author>
<publisher>Pocket</publisher>
<isbn>0743416910</isbn>
<price>5.99</price>
</book>
<book year="1995">
<title>Zodiac</title>
<author>Neal Stephenson</author>
<publisher>Spectra</publisher>
<isbn>0553573862</isbn>
<price>7.50</price>
</book>
<!-- more books... -->
</inventory>
20/01/2009

startElement: inventory
characters: "
"
startElement: book
characters: "
"
startElement: title
characters: "Snow Crash"
endElement: /title
characters: "
"
startElement: author
characters: "Neal Stephenson"
endElement: /author
characters: "
"
startElement: publisher
characters: "Spectra"
endElement: /publisher
characters: "
...
"
endElement: /book
...
endElement: /inventory
24
Attributes











getLength()
getLocalName(index)
getQName(index)
getValue(index)
getType(index)

int getIndex(String qualifiedName)
int getIndex(String uri, String localName)
String getValue(String qualifiedName)
String getValue(String uri, String localName)

20/01/2009

25
Attributes

public void startElement(String namespaceURI,
String localName,
String qualifiedName,
Attributes attributes) throws SAXException {
// ....
for (int i = 0; i < attributes.getLength(); i++) {
String attName = attributes.getQName(i);
String attValue = attributes.getValue(i);
System.out.println(attName+"='"+attValue+"'");
}
// ....
}

20/01/2009

26
3.

JDOM

Java DOM
Import required packages
import
import
import
import

org.jdom.*;
org.jdom.input.*;
org.jdom.output.*;
org.jdom.adapters.*;

org.jdom
org.jdom.adapters
org.jdom.input
org.jdom.output
20/01/2009

28
Create the parser

try {
SAXBuilder builder = new SAXBuilder();

// ....
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (JDOMException je) {
je.printStackTrace();
}

20/01/2009

29
Parse an XML file

Document document = builder.build("../inventory.xml");

20/01/2009

30
Root element

Element root = document.getRootElement();
System.out.println(root.getName());

20/01/2009

31
Print out the document

XMLOutputter outputter = new XMLOutputter();
outputter.output(document, System.out);

StringWriter sw = new StringWriter();
XMLOutputter outputter = new XMLOutputter();
outputter.output(document, sw);
String xml = sw.toString();

Advantage 1:
20/01/2009

Output facility
32
Get children
• Get all direct children
List allChildren = element.getChildren();

• Get all direct children with a given name
List namedChildren = element.getChildren("book");

• Get the first child with a given name
Element child = element.getChild("book");

Advantage 2:
20/01/2009

supports Java Collections
33
Travel through children nodes

List children = element.getChildren();
for (int i = 0; i < children.size(); i++) {
Element elem = (Element) children.get(i);
// ....
}

20/01/2009

34
Get attributes
• Get all attributes
List attrs = element.getAttributes();
for (int i = 0; i < attrs.size(); i++)
Attribute attr = (Attribute) attrs.get(i);
System.out.println(attr.getName()+" = "+attr.getValue());
}

• Get an attribute with a given name
Attribute attr = element.getAttribute("year");

• Get an attribute value with a given name
String value = element.getAttributeValue("year");

20/01/2009

35
Reading Element Content
• The text content is directly available
String content = element.getText();

• Remove extra whitespace
String content = element.getTextTrim();

20/01/2009

36
Mixed Content
• Sometimes an element may contain comments, text content, and children
<table>
<!-- Some comment -->
Some text
<tr>Some child</tr>
</table>

String text = table.getTextTrim();
Element tr = table.getChild("tr");

20/01/2009

37
Mixed Content

List mixedContent = table.getContent();
Iterator iter = mixedContent.iterator();
while (iter.hasNext()) {
Object obj = iter.next();
if (obj instanceof Comment) {
System.out.println("Comment: " + obj);
} else if (obj instanceof String) {
System.out.println("String: " + obj);
} else if (obj instanceof Element) {
System.out.println("Element: " + ((Element)obj).getName());
}
}

20/01/2009

38
References


Processing XML with Java; Elliotte Rusty Harold
http://cafeconleche.org/books/xmljava/chapters/index.html

20/01/2009

39

More Related Content

PDF
Tema 6 - Formularios en html
PDF
Android ui menu
PDF
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
PPT
Swing and AWT in java
PPTX
Android UI
PPT
PDF
Présentation Flutter
Tema 6 - Formularios en html
Android ui menu
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
Swing and AWT in java
Android UI
Présentation Flutter

What's hot (20)

PPTX
Modules in AngularJs
PPT
Javascript
PPTX
Features of java
PPT
Java Script ppt
PPTX
Core java complete ppt(note)
PDF
Apache Struts
PPTX
Operators In Java Part - 8
PDF
Introduction to Java
PDF
3. Java Script
PPTX
jQuery
PDF
Java Training | Java Tutorial for Beginners | Java Programming | Java Certifi...
PDF
Android : Architecture & Components
PPTX
Basics of Front End Web Dev PowerPoint
PDF
Android datastorage
PPTX
Hibernate ppt
PDF
Basics of JavaScript
PDF
MongoDB and Node.js
PDF
web development
PDF
PPTX
React + Redux Introduction
Modules in AngularJs
Javascript
Features of java
Java Script ppt
Core java complete ppt(note)
Apache Struts
Operators In Java Part - 8
Introduction to Java
3. Java Script
jQuery
Java Training | Java Tutorial for Beginners | Java Programming | Java Certifi...
Android : Architecture & Components
Basics of Front End Web Dev PowerPoint
Android datastorage
Hibernate ppt
Basics of JavaScript
MongoDB and Node.js
web development
React + Redux Introduction
Ad

Viewers also liked (10)

PPT
Oracle xmldb
PPT
Grupo1
PPT
Xml Java
PPT
Java XML Parsing
PPTX
Tema 3 xml processing ap is
PDF
Integración de aplicaciones Java
PPT
DOM and SAX
PPT
Paginas de matematicas
Oracle xmldb
Grupo1
Xml Java
Java XML Parsing
Tema 3 xml processing ap is
Integración de aplicaciones Java
DOM and SAX
Paginas de matematicas
Ad

Similar to Java and XML (20)

PDF
SAX, DOM & JDOM parsers for beginners
PDF
Building XML Based Applications
PDF
Jdom how it works & how it opened the java process
PDF
Ch23
PDF
Ch23 xml processing_with_java
PPT
XML SAX PARSING
PPTX
buildingxmlbasedapplications-180322042009.pptx
PPTX
Sax parser
PDF
Parsing XML Data
PDF
Processing XML
PPTX
06 xml processing-in-.net
PDF
Service Oriented Architecture - Unit II - Sax
PDF
Xml parsing
PPTX
Unit iv xml dom
PDF
Data formats
PDF
X Usax Pdf
PDF
IT6801-Service Oriented Architecture-Unit-2-notes
PDF
Xml And JSON Java
PPT
PPT
5 xml parsing
SAX, DOM & JDOM parsers for beginners
Building XML Based Applications
Jdom how it works & how it opened the java process
Ch23
Ch23 xml processing_with_java
XML SAX PARSING
buildingxmlbasedapplications-180322042009.pptx
Sax parser
Parsing XML Data
Processing XML
06 xml processing-in-.net
Service Oriented Architecture - Unit II - Sax
Xml parsing
Unit iv xml dom
Data formats
X Usax Pdf
IT6801-Service Oriented Architecture-Unit-2-notes
Xml And JSON Java
5 xml parsing

More from Raji Ghawi (12)

PPTX
Database Programming Techniques
PPTX
Java and XML Schema
PPTX
Java and SPARQL
PPTX
Java and OWL
PPTX
SPARQL
PPTX
XQuery
PPTX
XPath
PPT
Ontology-based Cooperation of Information Systems
PPT
OWSCIS: Ontology and Web Service based Cooperation of Information Sources
PPT
Coopération des Systèmes d'Informations basée sur les Ontologies
PPT
Building Ontologies from Multiple Information Sources
PPT
Database-to-Ontology Mapping Generation for Semantic Interoperability
Database Programming Techniques
Java and XML Schema
Java and SPARQL
Java and OWL
SPARQL
XQuery
XPath
Ontology-based Cooperation of Information Systems
OWSCIS: Ontology and Web Service based Cooperation of Information Sources
Coopération des Systèmes d'Informations basée sur les Ontologies
Building Ontologies from Multiple Information Sources
Database-to-Ontology Mapping Generation for Semantic Interoperability

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Spectroscopy.pptx food analysis technology
PDF
Electronic commerce courselecture one. Pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
1. Introduction to Computer Programming.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Empathic Computing: Creating Shared Understanding
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPTX
A Presentation on Artificial Intelligence
Diabetes mellitus diagnosis method based random forest with bat algorithm
Advanced methodologies resolving dimensionality complications for autism neur...
Spectroscopy.pptx food analysis technology
Electronic commerce courselecture one. Pdf
Big Data Technologies - Introduction.pptx
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Assigned Numbers - 2025 - Bluetooth® Document
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
1. Introduction to Computer Programming.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Network Security Unit 5.pdf for BCA BBA.
A comparative analysis of optical character recognition models for extracting...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Empathic Computing: Creating Shared Understanding
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
MYSQL Presentation for SQL database connectivity
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
NewMind AI Weekly Chronicles - August'25-Week II
A Presentation on Artificial Intelligence

Java and XML

  • 1. Java and XML (DOM, SAX, JDOM) Raji GHAWI 20/01/2009
  • 4. <inventory> <book year="2000"> <title>Snow Crash</title> <author>Neal Stephenson</author> <publisher>Spectra</publisher> <isbn>0553380958</isbn> <price>14.95</price> </book> <book year="2005"> <title>Burning Tower</title> <author>Larry Niven</author> <author>Jerry Pournelle</author> <publisher>Pocket</publisher> <isbn>0743416910</isbn> <price>5.99</price> </book> <book year="1995"> <title>Zodiac</title> <author>Neal Stephenson</author> <publisher>Spectra</publisher> <isbn>0553573862</isbn> <price>7.50</price> </book> <!-- more books... --> </inventory> 20/01/2009 4
  • 5. Import required packages import javax.xml.parsers.*; import org.w3c.dom.*; 20/01/2009 5
  • 6. Create the parser DOM parser factory try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // .... } catch (Exception e) { e.printStackTrace(System.out); } DOM parser 20/01/2009 IOException ParserConfigurationException SAXException 6
  • 7. Parse an XML file Document document = builder.parse("../inventory.xml"); the entire XML file (as a tree) (the Document Object Model) 20/01/2009 7
  • 8. Root element the root element Element root = document.getDocumentElement(); System.out.println(root.getTagName()); 20/01/2009 8
  • 9. Nodes Node Text Element may have children Attr leaves Operations on Nodes Element Text Attr getNodeName() tag name "#text" name of attribute getNodeValue() null text contents value of attribute getNodeType() ELEMENT_NODE TEXT_NODE ATTRIBUTE_NODE getAttributes() NamedNodeMap null null 20/01/2009 9
  • 10. Distinguishing Node types switch(node.getNodeType()) { case Node.ELEMENT_NODE: Element element = (Element)node; ...; break; case Node.TEXT_NODE: Text text = (Text)node; ... break; case Node.ATTRIBUTE_NODE: Attr attr = (Attr)node; ... break; default: ... } 20/01/2009 10
  • 12. Travel through children nodes if (element.hasChildNodes()) { Node child = element.getFirstChild(); while (child != null) { // .... child = child.getNextSibling(); } } 20/01/2009 12
  • 13. Operations for Elements      String getTagName() boolean hasAttribute(String name) String getAttribute(String name) boolean hasAttributes() NamedNodeMap getAttributes() 20/01/2009 13
  • 14. NamedNodeMap    Node getNamedItem(String name) int getLength() Node item(int index) NamedNodeMap map = element.getAttributes(); for (int i = 0; i < map.getLength(); i++) { Attr attr = (Attr) map.item(i); System.out.println(attr.getNodeName() + "='"+ attr.getNodeValue()+"'"); } 20/01/2009 14
  • 15. Operations on Texts    String getData() int getLength() String substringData(int offset, int count) 20/01/2009 15
  • 16. Operations on Attrs    String getName() Element getOwnerElement() String getValue() 20/01/2009 16
  • 18. Import required packages import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; 20/01/2009 18
  • 19. Create the parser // Create a parser factory SAXParserFactory factory = SAXParserFactory.newInstance(); // Tell factory that the parser must understand namespaces factory.setNamespaceAware(true); try { // Make the parser SAXParser saxParser = factory.newSAXParser(); XMLReader parser = saxParser.getXMLReader(); } catch(Exception e){ e.printStackTrace(); } 20/01/2009 IOException ParserConfigurationException SAXException 19
  • 20. Parse an XML file // Create a handler Handler handler = new Handler(); // Tell the parser to use this handler parser.setContentHandler(handler); // Finally, read and parse the document parser.parse("./inventory.xml"); 20/01/2009 20
  • 21. SAX handlers  A callback handler for SAX must implement four interfaces:  interface ContentHandler  interface DTDHandler  interface EntityResolver  interface ErrorHandler  It is easier to use an adapter class 20/01/2009 21
  • 22. Class DefaultHandler    DefaultHandler is in package org.xml.sax.helpers DefaultHandler implements ContentHandler, DTDHandler, EntityResolver, and ErrorHandler DefaultHandler is an adapter class   Provides empty methods for every method declared in each of the four interfaces To use this class, extend it and override the methods that are important to your application 20/01/2009 22
  • 23. The Handler class class Handler extends DefaultHandler { // SAX calls this method when it encounters a start tag public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes attributes) throws SAXException { System.out.println("startElement: " + qualifiedName); } // SAX calls this method to pass in character data public void characters(char ch[], int start, int length) throws SAXException { System.out.println("characters: "" + new String(ch, start, length) + """); } // SAX call this method when it encounters an end tag public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException { System.out.println("endElement: /" + qualifiedName); } } 20/01/2009 23
  • 24. <inventory> <book year="2000"> <title>Snow Crash</title> <author>Neal Stephenson</author> <publisher>Spectra</publisher> <isbn>0553380958</isbn> <price>14.95</price> </book> <book year="2005"> <title>Burning Tower</title> <author>Larry Niven</author> <author>Jerry Pournelle</author> <publisher>Pocket</publisher> <isbn>0743416910</isbn> <price>5.99</price> </book> <book year="1995"> <title>Zodiac</title> <author>Neal Stephenson</author> <publisher>Spectra</publisher> <isbn>0553573862</isbn> <price>7.50</price> </book> <!-- more books... --> </inventory> 20/01/2009 startElement: inventory characters: " " startElement: book characters: " " startElement: title characters: "Snow Crash" endElement: /title characters: " " startElement: author characters: "Neal Stephenson" endElement: /author characters: " " startElement: publisher characters: "Spectra" endElement: /publisher characters: " ... " endElement: /book ... endElement: /inventory 24
  • 25. Attributes          getLength() getLocalName(index) getQName(index) getValue(index) getType(index) int getIndex(String qualifiedName) int getIndex(String uri, String localName) String getValue(String qualifiedName) String getValue(String uri, String localName) 20/01/2009 25
  • 26. Attributes public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes attributes) throws SAXException { // .... for (int i = 0; i < attributes.getLength(); i++) { String attName = attributes.getQName(i); String attValue = attributes.getValue(i); System.out.println(attName+"='"+attValue+"'"); } // .... } 20/01/2009 26
  • 29. Create the parser try { SAXBuilder builder = new SAXBuilder(); // .... } catch (IOException ioe) { ioe.printStackTrace(); } catch (JDOMException je) { je.printStackTrace(); } 20/01/2009 29
  • 30. Parse an XML file Document document = builder.build("../inventory.xml"); 20/01/2009 30
  • 31. Root element Element root = document.getRootElement(); System.out.println(root.getName()); 20/01/2009 31
  • 32. Print out the document XMLOutputter outputter = new XMLOutputter(); outputter.output(document, System.out); StringWriter sw = new StringWriter(); XMLOutputter outputter = new XMLOutputter(); outputter.output(document, sw); String xml = sw.toString(); Advantage 1: 20/01/2009 Output facility 32
  • 33. Get children • Get all direct children List allChildren = element.getChildren(); • Get all direct children with a given name List namedChildren = element.getChildren("book"); • Get the first child with a given name Element child = element.getChild("book"); Advantage 2: 20/01/2009 supports Java Collections 33
  • 34. Travel through children nodes List children = element.getChildren(); for (int i = 0; i < children.size(); i++) { Element elem = (Element) children.get(i); // .... } 20/01/2009 34
  • 35. Get attributes • Get all attributes List attrs = element.getAttributes(); for (int i = 0; i < attrs.size(); i++) Attribute attr = (Attribute) attrs.get(i); System.out.println(attr.getName()+" = "+attr.getValue()); } • Get an attribute with a given name Attribute attr = element.getAttribute("year"); • Get an attribute value with a given name String value = element.getAttributeValue("year"); 20/01/2009 35
  • 36. Reading Element Content • The text content is directly available String content = element.getText(); • Remove extra whitespace String content = element.getTextTrim(); 20/01/2009 36
  • 37. Mixed Content • Sometimes an element may contain comments, text content, and children <table> <!-- Some comment --> Some text <tr>Some child</tr> </table> String text = table.getTextTrim(); Element tr = table.getChild("tr"); 20/01/2009 37
  • 38. Mixed Content List mixedContent = table.getContent(); Iterator iter = mixedContent.iterator(); while (iter.hasNext()) { Object obj = iter.next(); if (obj instanceof Comment) { System.out.println("Comment: " + obj); } else if (obj instanceof String) { System.out.println("String: " + obj); } else if (obj instanceof Element) { System.out.println("Element: " + ((Element)obj).getName()); } } 20/01/2009 38
  • 39. References  Processing XML with Java; Elliotte Rusty Harold http://cafeconleche.org/books/xmljava/chapters/index.html 20/01/2009 39