Java XML — Overview
XML is a simple text-based language which was designed to store and transport data in plain text format. It stands for Extensible Markup Language. Following are some of the salient features of XML.
XML is a markup language.
XML is a tag based language like HTML.
XML tags are not predefined like HTML.
You can define your own tags which is why it is called extensible language.
XML tags are designed to be self-descriptive.
XML is W3C Recommendation for data storage and data transfer.
Example
Advantages
Following are the advantages that XML provides −
Technology agnostic − Being plain text, XML is technology independent. It can be used by any technology for data storage and data transfer purpose.
Human readable − XML uses simple text format. It is human readable and understandable.
Extensible − In XML, custom tags can be created and used very easily.
Allow Validation − Using XSD, DTD and XML structures can be validated easily.
Disadvantages
Following are the disadvantages of using XML −
Redundant Syntax − Normally XML files contain a lot of repetitive terms.
Verbose − Being a verbose language, XML file size increases the transmission and storage costs.
Java XML — Parsers
XML Parsing refers to going through an XML document in order to access or modify data.
What is XML Parser?
XML Parser provides a way to access or modify data in an XML document. Java provides multiple options to parse XML documents. Following are the various types of parsers which are commonly used to parse XML documents.
Dom Parser − Parses an XML document by loading the complete contents of the document and creating its complete hierarchical tree in memory.
SAX Parser − Parses an XML document on event-based triggers. Does not load the complete document into the memory.
JDOM Parser − Parses an XML document in a similar fashion to DOM parser but in an easier way.
StAX Parser − Parses an XML document in a similar fashion to SAX parser but in a more efficient way.
XPath Parser − Parses an XML document based on expression and is used extensively in conjunction with XSLT.
DOM4J Parser − A java library to parse XML, XPath, and XSLT using Java Collections Framework. It provides support for DOM, SAX, and JAXP.
There are JAXB and XSLT APIs available to handle XML parsing in object-oriented way. We’ll elaborate each parser in detail in the subsequent chapters of this tutorial.
Java DOM Parser — Overview
The Document Object Model (DOM) is an official recommendation of the World Wide Web Consortium (W3C). It defines an interface that enables programs to access and update the style, structure, and contents of XML documents. XML parsers that support DOM implement this interface.
When to Use?
You should use a DOM parser when −
You need to know a lot about the structure of a document.
You need to move parts of an XML document around (you might want to sort certain elements, for example).
You need to use the information in an XML document more than once.
What You Get?
When you parse an XML document with a DOM parser, you get back a tree structure that contains all of the elements of your document. The DOM provides a variety of functions you can use to examine the contents and structure of the document.
Advantages
The DOM is a common interface for manipulating document structures. One of its design goals is that Java code written for one DOM-compliant parser should run on any other DOM-compliant parser without having to do any modifications.
DOM interfaces
The DOM defines several Java interfaces. Here are the most common interfaces −
Node − The base datatype of the DOM.
Element − The vast majority of the objects you’ll deal with are Elements.
Attr − Represents an attribute of an element.
Text − The actual content of an Element or Attr.
Document − Represents the entire XML document. A Document object is often referred to as a DOM tree.
Common DOM methods
When you are working with DOM, there are several methods you’ll use often −
Document.getDocumentElement() − Returns the root element of the document.
Node.getFirstChild() − Returns the first child of a given Node.
Node.getLastChild() − Returns the last child of a given Node.
Node.getNextSibling() − These methods return the next sibling of a given Node.
Node.getPreviousSibling() − These methods return the previous sibling of a given Node.
Node.getAttribute(attrName) − For a given Node, it returns the attribute with the requested name.
Java DOM Parser — Parse XML Document
Steps to Using JDOM
Following are the steps used while parsing a document using JDOM Parser.
- Import XML-related packages.
- Create a DocumentBuilder
- Create a Document from a file or stream
- Extract the root element
- Examine attributes
- Examine sub-elements
Import XML-related packages
Create a DocumentBuilder
Create a Document from a file or stream
Extract the root element
Examine attributes
Examine sub-elements
Demo Example
Here is the input xml file that we need to parse −
DomParserDemo.java
This would produce the following result −
Java DOM Parser — Query XML Document
Demo Example
Here is the input xml file that we need to query −
QueryXmlFileDemo.java
This would produce the following result −
Java DOM Parser — Create XML Document
Demo Example
Here is the XML we need to create −
CreateXmlFileDemo.java
This would produce the following result −
Java DOM Parser — Modify XML Document
Demo Example
Here is the input xml file we need to modify −
ModifyXmlFileDemo.java
This would produce the following result −
Java SAX Parser — Overview
SAX (Simple API for XML) is an event-based parser for XML documents. Unlike a DOM parser, a SAX parser creates no parse tree. SAX is a streaming interface for XML, which means that applications using SAX receive event notifications about the XML document being processed an element, and attribute, at a time in sequential order starting at the top of the document, and ending with the closing of the ROOT element.
Reads an XML document from top to bottom, recognizing the tokens that make up a well-formed XML document.
Tokens are processed in the same order that they appear in the document.
Reports the application program the nature of tokens that the parser has encountered as they occur.
The application program provides an «event» handler that must be registered with the parser.
As the tokens are identified, callback methods in the handler are invoked with the relevant information.
When to Use?
You should use a SAX parser when −
You can process the XML document in a linear fashion from top to down.
The document is not deeply nested.
You are processing a very large XML document whose DOM tree would consume too much memory. Typical DOM implementations use ten bytes of memory to represent one byte of XML.
The problem to be solved involves only a part of the XML document.
Data is available as soon as it is seen by the parser, so SAX works well for an XML document that arrives over a stream.
Disadvantages of SAX
We have no random access to an XML document since it is processed in a forward-only manner.
If you need to keep track of data that the parser has seen or change the order of items, you must write the code and store the data on your own.
ContentHandler Interface
This interface specifies the callback methods that the SAX parser uses to notify an application program of the components of the XML document that it has seen.
void startDocument() − Called at the beginning of a document.
void endDocument() − Called at the end of a document.
void startElement(String uri, String localName, String qName, Attributes atts) − Called at the beginning of an element.
void endElement(String uri, String localName,String qName) − Called at the end of an element.
void characters(char[] ch, int start, int length) − Called when character data is encountered.
void ignorableWhitespace( char[] ch, int start, int length) − Called when a DTD is present and ignorable whitespace is encountered.
void processingInstruction(String target, String data) − Called when a processing instruction is recognized.
void setDocumentLocator(Locator locator)) − Provides a Locator that can be used to identify positions in the document.
void skippedEntity(String name) − Called when an unresolved entity is encountered.
void startPrefixMapping(String prefix, String uri) − Called when a new namespace mapping is defined.
void endPrefixMapping(String prefix) − Called when a namespace definition ends its scope.
Attributes Interface
This interface specifies methods for processing the attributes connected to an element.
int getLength() − Returns number of attributes.
String getQName(int index)
String getValue(int index)
String getValue(String qname)
Java SAX Parser — Parse XML Document
Demo Example
Here is the input xml file we need to parse −
UserHandler.java
SAXParserDemo.java
This would produce the following result −
Java SAX Parser — Query XML Document
Demo Example
Here is the input text file that we need to Query for rollno: 393
UserHandler.java
SAXQueryDemo.java
This would produce the following result −
Java SAX Parser — Create XML Document
It is better to use StAX parser for creating XML documents rather than using SAX parser. Please refer the Java StAX Parser section for the same.
Java SAX Parser — Modify XML Document
Demo Example
Here is the input XML file that we need to modify by appending <Result>Pass<Result/> at the end of </marks> tag.
SAXModifyDemo.java
This would produce the following result −
Java JDOM Parser — Overview
JDOM is an open source, Java-based library to parse XML documents. It is typically a Java developer friendly API. It is Java optimized and it uses Java collections like List and Arrays.
JDOM works with DOM and SAX APIs and combines the best of the two. It is of low memory footprint and is nearly as fast as SAX.
Environment Setup
In order to use JDOM parser, you should have jdom.jar in your application’s classpath. Download jdom-2.0.5.zip.
When to Use?
You should use a JDOM parser when −
You need to know a lot about the structure of an XML document.
You need to move parts of an XMl document around (you might want to sort certain elements, for example).
You need to use the information in an XML document more than once.
You are a Java developer and want to leverage Java optimized parsing of XML.
What You Get?
When you parse an XML document with a JDOM parser, you get the flexibility to get back a tree structure that contains all of the elements of your document without impacting the memory footprint of the application.
JDOM provides a variety of utility functions that you can use to examine the contents and structure of an XML document in case the document is well structured and its structure is known.
Advantages
JDOM provides Java developers the flexibility and easy maintainablity of XML parsing code. It is a lightweight and quick API.
JDOM classes
JDOM defines several Java classes. Here are the most common classes −
Document − Represents an entire XML document. A Document object is often referred to as a DOM tree.
Element − Represents an XML element. Element object has methods to manipulate its child elements, its text, attributes, and namespaces.
Attribute − Represents an attribute of an element. Attribute has method to get and set the value of attribute. It has parent and attribute type.
Text − Represents the text of XML tag.
Comment − Represents the comments in a XML document.
Common JDOM Methods
When you are working with JDOM, there are several methods you’ll use often −
SAXBuilder.build(xmlSource)() − Build the JDOM document from the xml source.
Document.getRootElement() − Get the root element of the XML.
Element.getName() − Get the name of the XML node.
Element.getChildren() − Get all the direct child nodes of an element.
Node.getChildren(Name) − Get all the direct child nodes with a given name.
Node.getChild(Name) − Get the first child node with the given name.
Java JDOM Parser — Parse XML Document
Steps to Using JDOM
Following are the steps used while parsing a document using JDOM Parser.
- Import XML-related packages.
- Create a SAXBuilder
- Create a Document from a file or stream
- Extract the root element
- Examine attributes
- Examine sub-elements
Import XML-related packages
Create a DocumentBuilder
Create a Document from a file or stream
Extract the root element
Examine attributes
Examine sub-elements
Demo Example
Here is the input xml file we need to parse −
DomParserDemo.java
This would produce the following result −
Java JDOM Parser — Query XML Document
Demo Example
Here is the input xml file that we need to query −
QueryXmlFileDemo.java
This would produce the following result −
Java JDOM Parser — Create XML Document
Demo Example
Here is the XML file that we need to create −
CreateXmlFileDemo.java
This would produce the following result −
Java JDOM Parser — Modify XML Document
Demo Example
Here is the input text file that we need to modify −
ModifyXmlFileDemo.java
This would produce the following result −
Java StAX Parser — Overview
StAX is a Java-based API to parse XML document in a similar way as SAX parser does. But there are two major difference between the two APIs −
StAX is a PULL API, whereas SAX is a PUSH API. It means in case of StAX parser, a client application needs to ask the StAX parser to get information from XML whenever it needs. But in case of SAX parser, a client application is required to get information when SAX parser notifies the client application that information is available.
StAX API can read as well as write XML documents. Using SAX API, an XML file can only be read.
Environment Setup
Following are the features of StAX API −
Reads an XML document from top to bottom, recognizing the tokens that make up a well-formed XML document.
Tokens are processed in the same order that they appear in the document.
Reports the application program the nature of tokens that the parser has encountered as they occur.
The application program provides an «event» reader which acts as an iterator and iterates over the event to get the required information. Another reader available is «cursor» which acts as a pointer to XML nodes.
As the events are identified, XML elements can be retrieved from the event object and can be processed further.
When to Use?
You should use a StAX parser when −
You can process the XML document in a linear fashion from top to down.
The document is not deeply nested.
You are processing a very large XML document whose DOM tree would consume too much memory. Typical DOM implementations use ten bytes of memory to represent one byte of XML.
The problem to be solved involves only a part of the XML document.
Data is available as soon as it is seen by the parser, so StAX works well for an XML document that arrives over a stream.
Disadvantages of SAX
We have no random access to an XML document, since it is processed in a forward-only manner.
If you need to keep track of data that the parser has seen or where the parser has changed the order of items, then you must write the code and store the data on your own.
XMLEventReader Class
This class provides iterator of events which can be used to iterate over events as they occur while parsing an XML document.
StartElement asStartElement() − Used to retrieve the value and attributes of an element.
EndElement asEndElement() − Called at the end of an element.
Characters asCharacters() − Can be used to obtain characters such as CDATA, whitespace, etc.
XMLEventWriter Class
This interface specifies methods for creating an event.
add(Event event) − Add event containing elements to XML.
XMLStreamReader Class
This class provides iterator of events which can be used to iterate over events as they occur while parsing an XML document.
int next() − Used to retrieve next event.
boolean hasNext() − Used to check further events exists or not.
String getText() − Used to get text of an element.
String getLocalName() − Used to get name of an element.
XMLStreamWriter Class
This interface specifies methods for creating an event.
writeStartElement(String localName) − Add a start element of given name.
writeEndElement(String localName) − Add an end element of given name.
writeAttribute(String localName, String value) − Write attributes to an element.
Java StAX Parser — Parse XML Document
Demo Example
Here is the input xml file that we need to parse −
StAXParserDemo.java
This would produce the following result −
Java StAX Parser — Query XML Document
Demo Example
Here is the input xml file that we need to parse −
StAXParserDemo.java
This would produce the following result −
Java StAX Parser — Create XML Document
Demo Example
Here is the XML that we need to create −
StAXCreateXMLDemo.java
This would produce the following result −
Java StAX Parser — Modify XML Document
Demo Example
Here is the XML that we need to modify −
StAXModifyDemo.java
This would produce the following result −
Java XPath Parser — Overview
XPath is an official recommendation of the World Wide Web Consortium (W3C). It defines a language to find information in an XML file. It is used to traverse elements and attributes of an XML document. XPath provides various types of expressions which can be used to enquire relevant information from the XML document.
What is XPath?
Structure Definations − XPath defines the parts of an XML document like element, attribute, text, namespace, processing-instruction, comment, and document nodes.
Path Expressions − XPath provides powerful path expressions such as select nodes or list of nodes in XML documents.
Standard Functions − XPath provides a rich library of standard functions for manipulation of string values, numeric values, date and time comparison, node and QName manipulation, sequence manipulation, Boolean values, etc.
Major part of XSLT − XPath is one of the major elements in XSLT standard and one must have sufficient knowledge of XPath in order to work with XSLT documents.
W3C recommendation − XPath is official recommendation of World Wide Web Consortium (W3C).
XPath Expressions
XPath uses a path expression to select node or list of nodes from an XML document. Following is a list of useful paths and expression to select any node/list of nodes from an XML document.
Select all nodes with the given name «nodename»
Selection starts from the root node
Selection starts from the current node that match the selection
Selects the current node
Selects the parent of the current node
Example − Selects all nodes with the name «student»
class/student
Example − Selects all student elements that are children of class
Selects all student elements no matter where they are in the document
Predicates
Predicates are used to find specific node or a node containing specific value and are defined using [. ].
| Expression | Result |
|---|---|
| /class/student[1] | Selects the first student element that is the child of the class element. |
| /class/student[last()] | Selects the last student element that is the child of the class element. |
| /class/student[last()-1] | Selects the last but one student element that is the child of the class element. |
| //student[@rollno = ‘493’] | Selects all the student elements that have an attribute named rollno with a value of ‘493’ |
Java XPath Parser — Parse XML Document
Steps to Using XPath
Following are the steps used while parsing a document using XPath Parser.
In Java How to Create XML File using DOM parser? Writing Out a DOM as an XML File

As we learned “Simple way to count number of XML elements in Java” earlier, here is another simple Java code which writes XML file in Java (DOM Parser).
- Writing Out a DOM as an XML File
- Java DOM tutorial – write XML with DOM in Java
- How to write XML file in Java (DOM Parser)
- Java: Simple Way to Write XML (DOM) File in Java
This is what I’m doing here:
- Creating Root XML element with name: Companies
- Creating 4 Company Element
- Every Company Element has an attribute id
- Every Company Element have 3 elements – Name, Type, Employee
DocumentBuilderFactory:
Defines a factory API that enables applications to obtain a parser that produces DOM object trees from XML documents.
DocumentBuilder:
Defines the API to obtain DOM Document instances from an XML document.
appendChild():
adds the node newChild to the end of the list of children of this node. If the newChild is already in the tree, it is first removed.
Transformer:
An instance of this abstract class can transform a source tree into a result tree.
DOMSource:
Acts as a holder for a transformation Source tree in the form of a Document Object Model (DOM) tree.
StreamResult:
Acts as an holder for a transformation result, which may be XML, plain Text, HTML, or some other form of markup.
- The Node interface is the primary datatype for the entire Document Object Model. It represents a single node in the document tree.
- The Document interface represents the entire HTML or XML document.
- The Element Java Interface represents an element in an HTML or XML document.
Eclipse Console Output:
Run above program as a Java Application to get similar result as below.
Join the Discussion
If you liked this article, then please share it on social media. Still have any questions about an article, leave us a comment.
Other Popular Articles.
Give me a try.
- 10 Best Mac Apps
- WordPress Security
- SEO Basics
- Optimize WP
- Plugins we use
About App Shah
I’m an Engineer by profession, Blogger by passion & Founder of Crunchify, LLC, the largest free blogging & technical resource site for beginners. Love SEO, SaaS, #webperf, WordPress, Java. With over 16 millions+ pageviews/month, Crunchify has changed the life of over thousands of individual around the globe teaching Java & Web Tech for FREE.
Subscribe To Newsletter…
Stay up to date & never miss an update! Signup for news, latest articles and special offers!! Join 16+ million monthly readers.
You can unsubscribe at any time.
Primary Sidebar
Top Tech Savvy Guides
- NEW My Top 3 Mac Productivity Apps & 10 iPhone Settings You Need To Turn Off now!
- Simplest Spring MVC Hello World & Spring Boot Tutorial
- NEW How to Sync Custom Folders with iCloud Drive? & Build RESTful Service using Jersey JAX-RS
- Top 10 Java Interview Q&A & Sort a HashMap by Key & Value
- Install Ansible on Linux & Race Condition in Java Multi-Threading
- Implement a LinkedList Class From Scratch & Memcached Java Client
Basic Java Tech
10% off coupon: CRUNCHIFY
Modern, Secure & Fast Managed WordPress Hosting. Check it out.
Useful WordPress Guide
- NEW Start 1st WordPress Blog & 15 Essential Optimization Tips
- Leverage .htaccess to Speed up WordPress & Stop loading unnecessary Files on Site
- Top 5 Basic SEO Tips & Importance of Keyword Research
- Better cleanup WordPress Header Section & Fix cPanel CPU issue
- Google Form as ultimate WordPress Contact Form & Load WordPress Fonts Locally (Speed Tips)
- 16 proven ways to get Quality Backlinks & Better Upgrade to PHP 7.1
- NEW Secure WordPress Login Area & Cloak Affiliate Links without WordPress plugin
WORDPRESS TUNING TIPS

Evernote – Tasks integration is really a game changer?…
How to Use Evernote Tasks To Get Focused. Here is an intro guide to using Tasks in …

10 iPhone iOS Settings You Need To Turn Off Now!…
In this tutorial we will go over list of iPhone or iOS setting you would want to disable …

iCloud Drive – Unable to turn on Desktop & Documents Folders?…
For you iCloud Drive Desktop & Documents Folders greyed out on MacBook Pro? Well, …

How to Stop Sharing Analytics Data to Apple – Change your iPhone,…
When you activate your iPhone, by default iPhone or iPad shares lots of analytics data to …
Java XML – Обзор
XML – это простой текстовый язык, разработанный для хранения и передачи данных в текстовом формате. Это означает расширяемый язык разметки. Ниже приведены некоторые характерные особенности XML.
XML – это язык разметки.
XML – это язык на основе тегов, такой как HTML.
Теги XML не предопределены как HTML.
Вы можете определить свои собственные теги, поэтому он называется расширяемым языком.
XML-теги предназначены для самоописания.
XML – Рекомендация W3C для хранения и передачи данных.
XML – это язык разметки.
XML – это язык на основе тегов, такой как HTML.
Теги XML не предопределены как HTML.
Вы можете определить свои собственные теги, поэтому он называется расширяемым языком.
XML-теги предназначены для самоописания.
XML – Рекомендация W3C для хранения и передачи данных.
пример
преимущества
Ниже приведены преимущества, которые предоставляет XML:
Независимость от технологии – XML, будучи простым текстом, не зависит от технологии. Может использоваться любой технологией для хранения и передачи данных.
Удобный для чтения – XML использует простой текстовый формат. Он читабелен и понятен человеку.
Расширяемость – в XML настраиваемые теги можно создавать и использовать очень легко.
Разрешить проверку – Использование структур XSD, DTD и XML можно легко проверить.
Независимость от технологии – XML, будучи простым текстом, не зависит от технологии. Может использоваться любой технологией для хранения и передачи данных.
Удобный для чтения – XML использует простой текстовый формат. Он читабелен и понятен человеку.
Расширяемость – в XML настраиваемые теги можно создавать и использовать очень легко.
Разрешить проверку – Использование структур XSD, DTD и XML можно легко проверить.
Недостатки
Ниже приведены недостатки использования XML –
Избыточный синтаксис. Обычно XML-файлы содержат много повторяющихся терминов.
Verbose. Будучи многословным языком, размер файла XML увеличивает стоимость передачи и хранения.
Избыточный синтаксис. Обычно XML-файлы содержат много повторяющихся терминов.
Verbose. Будучи многословным языком, размер файла XML увеличивает стоимость передачи и хранения.
Java XML – парсеры
Синтаксический анализ XML относится к просмотру XML-документа для доступа к данным или их изменения.
Что такое XML Parser?
XML Parser предоставляет способ доступа или изменения данных в документе XML. Java предоставляет несколько опций для анализа XML-документов. Ниже приведены различные типы синтаксических анализаторов, которые обычно используются для анализа XML-документов.
Dom Parser – анализирует XML-документ, загружая все содержимое документа и создавая его полное иерархическое дерево в памяти.
SAX Parser – анализирует XML-документ по триггерам на основе событий. Не загружает полный документ в память.
Анализатор JDOM – анализирует XML-документ аналогично анализатору DOM, но более простым способом.
StAX Parser – анализирует XML-документ аналогично SAX-анализатору, но более эффективным способом.
Анализатор XPath – анализирует XML-документ на основе выражения и широко используется в сочетании с XSLT.
DOM4J Parser – библиотека Java для анализа XML, XPath и XSLT с использованием Java Collections Framework. Он обеспечивает поддержку DOM, SAX и JAXP.
Dom Parser – анализирует XML-документ, загружая все содержимое документа и создавая его полное иерархическое дерево в памяти.
SAX Parser – анализирует XML-документ по триггерам на основе событий. Не загружает полный документ в память.
Анализатор JDOM – анализирует XML-документ аналогично анализатору DOM, но более простым способом.
StAX Parser – анализирует XML-документ аналогично SAX-анализатору, но более эффективным способом.
Анализатор XPath – анализирует XML-документ на основе выражения и широко используется в сочетании с XSLT.
DOM4J Parser – библиотека Java для анализа XML, XPath и XSLT с использованием Java Collections Framework. Он обеспечивает поддержку DOM, SAX и JAXP.
Доступны API-интерфейсы JAXB и XSLT для обработки синтаксического анализа XML объектно-ориентированным способом. Мы подробно рассмотрим каждый синтаксический анализатор в последующих главах этого урока.
Java DOM Parser – Обзор
Объектная модель документа (DOM) является официальной рекомендацией Консорциума World Wide Web (W3C). Он определяет интерфейс, который позволяет программам получать доступ и обновлять стиль, структуру и содержимое документов XML. XML-парсеры, поддерживающие DOM, реализуют этот интерфейс.
Когда использовать?
Вы должны использовать DOM-парсер, когда –
Вам нужно много знать о структуре документа.
Вам нужно перемещать части XML-документа (например, вы можете отсортировать определенные элементы).
Вам необходимо использовать информацию в документе XML более одного раза.
Вам нужно много знать о структуре документа.
Вам нужно перемещать части XML-документа (например, вы можете отсортировать определенные элементы).
Вам необходимо использовать информацию в документе XML более одного раза.
Что вы получаете?
Когда вы анализируете документ XML с помощью анализатора DOM, вы получаете древовидную структуру, которая содержит все элементы вашего документа. DOM предоставляет множество функций, которые вы можете использовать для проверки содержимого и структуры документа.
преимущества
DOM – это общий интерфейс для управления структурами документов. Одна из целей разработки заключается в том, чтобы код Java, написанный для одного DOM-совместимого синтаксического анализатора, работал на любом другом DOM-совместимом синтаксическом анализаторе без каких-либо изменений.
DOM интерфейсы
DOM определяет несколько интерфейсов Java. Вот наиболее распространенные интерфейсы –
Узел – базовый тип данных DOM.
Элемент – Подавляющее большинство объектов, с которыми вы будете иметь дело, это Элементы.
Attr – представляет атрибут элемента.
Текст – фактическое содержание элемента или атрибута.
Документ – представляет весь документ XML. Объект Document часто называют деревом DOM.
Узел – базовый тип данных DOM.
Элемент – Подавляющее большинство объектов, с которыми вы будете иметь дело, это Элементы.
Attr – представляет атрибут элемента.
Текст – фактическое содержание элемента или атрибута.
Документ – представляет весь документ XML. Объект Document часто называют деревом DOM.
Общие методы DOM
Когда вы работаете с DOM, вы часто будете использовать несколько методов:
Document.getDocumentElement () – возвращает корневой элемент документа.
Node.getFirstChild () – Возвращает первого потомка данного узла.
Node.getLastChild () – Возвращает последнего потомка данного узла.
Node.getNextSibling () – Эти методы возвращают следующего брата данного узла.
Node.getPreviousSibling () – Эти методы возвращают предыдущего родственного элемента данного узла.
Node.getAttribute (attrName) – для данного узла он возвращает атрибут с запрошенным именем.
Document.getDocumentElement () – возвращает корневой элемент документа.
Node.getFirstChild () – Возвращает первого потомка данного узла.
Node.getLastChild () – Возвращает последнего потомка данного узла.
Node.getNextSibling () – Эти методы возвращают следующего брата данного узла.
Node.getPreviousSibling () – Эти методы возвращают предыдущего родственного элемента данного узла.
Node.getAttribute (attrName) – для данного узла он возвращает атрибут с запрошенным именем.
Java DOM Parser – разбирать XML-документ
Шаги к использованию JDOM
Ниже приведены шаги, используемые при синтаксическом анализе документа с использованием JDOM Parser.
- Импорт пакетов, связанных с XML.
- Создать DocumentBuilder
- Создать документ из файла или потока
- Извлечь корневой элемент
- Изучить атрибуты
- Изучить подэлементы
Импорт пакетов, связанных с XML
Создать DocumentBuilder
Создать документ из файла или потока
Извлечь корневой элемент
Изучить атрибуты
Изучить подэлементы
Демо-пример
Вот входной XML-файл, который нам нужно проанализировать –
DomParserDemo.java
Это даст следующий результат –
Java DOM Parser – запрос XML-документа
Демо-пример
Вот входной XML-файл, который нам нужно запросить –
QueryXmlFileDemo.java
Это даст следующий результат –
Java DOM Parser – Создание XML-документа
Демо-пример
Вот XML, который нам нужно создать –
CreateXmlFileDemo.java
Это даст следующий результат –
Java DOM Parser – Изменить XML-документ
Демо-пример
Вот входной XML-файл, который мы должны изменить –
ModifyXmlFileDemo.java
Это даст следующий результат –
Java SAX Parser – Обзор
SAX (простой API для XML) – это анализатор на основе событий для документов XML. В отличие от парсера DOM, парсер SAX не создает дерева разбора. SAX – это потоковый интерфейс для XML, который означает, что приложения, использующие SAX, получают уведомления о событиях, когда XML-документ обрабатывает элемент и атрибут, в одно и то же время в последовательном порядке, начиная с верхней части документа и заканчивая закрытием Корень элемент.
Читает XML-документ сверху вниз, распознавая токены, которые составляют правильно сформированный XML-документ.
Токены обрабатываются в том же порядке, в котором они появляются в документе.
Сообщает прикладной программе о природе токенов, с которыми анализатор сталкивался по мере их появления.
Прикладная программа предоставляет обработчик «события», который должен быть зарегистрирован парсером.
Когда токены идентифицированы, методы обратного вызова в обработчике вызываются с соответствующей информацией.
Читает XML-документ сверху вниз, распознавая токены, которые составляют правильно сформированный XML-документ.
Токены обрабатываются в том же порядке, в котором они появляются в документе.
Сообщает прикладной программе о природе токенов, с которыми анализатор сталкивался по мере их появления.
Прикладная программа предоставляет обработчик «события», который должен быть зарегистрирован парсером.
Когда токены идентифицированы, методы обратного вызова в обработчике вызываются с соответствующей информацией.
Когда использовать?
Вы должны использовать парсер SAX, когда –
Вы можете обрабатывать XML-документ линейно сверху вниз.
Документ не является глубоко вложенным.
Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.
Проблема, которая должна быть решена, включает в себя только часть XML-документа.
Данные становятся доступными, как только они видятся синтаксическим анализатором, поэтому SAX хорошо работает для XML-документа, который поступает через поток.
Вы можете обрабатывать XML-документ линейно сверху вниз.
Документ не является глубоко вложенным.
Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.
Проблема, которая должна быть решена, включает в себя только часть XML-документа.
Данные становятся доступными, как только они видятся синтаксическим анализатором, поэтому SAX хорошо работает для XML-документа, который поступает через поток.
Недостатки SAX
У нас нет произвольного доступа к документу XML, так как он обрабатывается только для пересылки.
Если вам нужно отслеживать данные, которые анализатор видел, или изменять порядок элементов, вы должны написать код и сохранить данные самостоятельно.
У нас нет произвольного доступа к документу XML, так как он обрабатывается только для пересылки.
Если вам нужно отслеживать данные, которые анализатор видел, или изменять порядок элементов, вы должны написать код и сохранить данные самостоятельно.
Интерфейс ContentHandler
Этот интерфейс указывает методы обратного вызова, которые использует синтаксический анализатор SAX для уведомления прикладной программы о компонентах документа XML, которые он видел.
void startDocument () – вызывается в начале документа.
void endDocument () – Вызывается в конце документа.
void startElement (String uri, String localName, String qName, Attributes atts) – Вызывается в начале элемента.
void endElement (String uri, String localName, String qName) – Вызывается в конце элемента.
Пустые символы (char [] ch, int start, int length) – Вызывается, когда встречаются символьные данные.
void ignorableWhitespace (char [] ch, int start, int length) – Вызывается, когда присутствует DTD и встречаются игнорируемые пробелы.
void processingInstruction (String target, String data) – Вызывается при распознавании инструкции обработки.
void setDocumentLocator (Locator locator)) – Предоставляет локатор, который можно использовать для определения позиций в документе.
void skippedEntity (String name) – Вызывается, когда встречается неразрешенная сущность.
void startPrefixMapping (String prefix, String uri) – Вызывается, когда определяется новое сопоставление пространства имен.
void endPrefixMapping (String prefix) – вызывается, когда определение пространства имен заканчивает свою область.
void startDocument () – вызывается в начале документа.
void endDocument () – Вызывается в конце документа.
void startElement (String uri, String localName, String qName, Attributes atts) – Вызывается в начале элемента.
void endElement (String uri, String localName, String qName) – Вызывается в конце элемента.
Пустые символы (char [] ch, int start, int length) – Вызывается, когда встречаются символьные данные.
void ignorableWhitespace (char [] ch, int start, int length) – Вызывается, когда присутствует DTD и встречаются игнорируемые пробелы.
void processingInstruction (String target, String data) – Вызывается при распознавании инструкции обработки.
void setDocumentLocator (Locator locator)) – Предоставляет локатор, который можно использовать для определения позиций в документе.
void skippedEntity (String name) – Вызывается, когда встречается неразрешенная сущность.
void startPrefixMapping (String prefix, String uri) – Вызывается, когда определяется новое сопоставление пространства имен.
void endPrefixMapping (String prefix) – вызывается, когда определение пространства имен заканчивает свою область.
Интерфейс атрибутов
Этот интерфейс определяет методы для обработки атрибутов, связанных с элементом.
int getLength () – Возвращает количество атрибутов.
Строка getQName (int index)
Строка getValue (int index)
Строка getValue (Строка qname)
int getLength () – Возвращает количество атрибутов.
Строка getQName (int index)
Строка getValue (int index)
Строка getValue (Строка qname)
Java SAX Parser – разбирать XML-документ
Демо-пример
Вот входной XML-файл, который нам нужно проанализировать –
UserHandler.java
SAXParserDemo.java
Это даст следующий результат –
Java SAX Parser – запрос XML-документа
Демо-пример
Вот входной текстовый файл, который нам нужен для запроса rollno: 393
UserHandler.java
SAXQueryDemo.java
Это даст следующий результат –
Java SAX Parser – Создание XML-документа
Для создания документов XML лучше использовать анализатор StAX, а не анализатор SAX. Пожалуйста, обратитесь к разделу Java StAX Parser для того же.
Java SAX Parser – Изменить XML-документ
Демо-пример
Вот входной XML-файл, который нам нужно изменить, добавив тег <Result> Pass <Result /> в конце тега </ marks>.
SAXModifyDemo.java
Это даст следующий результат –
Java JDOM Parser – Обзор
JDOM – это библиотека на основе Java с открытым исходным кодом для анализа XML-документов. Обычно это дружественный к Java API-интерфейс. Он оптимизирован для Java и использует коллекции Java, такие как List и Arrays.
JDOM работает с DOM и SAX API и сочетает в себе лучшее из двух. Он занимает мало памяти и почти так же быстр, как SAX.
Настройка среды
Чтобы использовать анализатор JDOM, у вас должен быть jdom.jar в пути к классу вашего приложения. Загрузите jdom-2.0.5.zip.
Когда использовать?
Вы должны использовать парсер JDOM, когда –
Вам нужно много знать о структуре XML-документа.
Вам необходимо перемещать части документа XMl (например, вы можете отсортировать определенные элементы).
Вам необходимо использовать информацию в документе XML более одного раза.
Вы являетесь разработчиком Java и хотите использовать оптимизированный для Java синтаксический анализ XML.
Вам нужно много знать о структуре XML-документа.
Вам необходимо перемещать части документа XMl (например, вы можете отсортировать определенные элементы).
Вам необходимо использовать информацию в документе XML более одного раза.
Вы являетесь разработчиком Java и хотите использовать оптимизированный для Java синтаксический анализ XML.
Что вы получаете?
Когда вы анализируете документ XML с помощью синтаксического анализатора JDOM, вы получаете гибкость, чтобы получить древовидную структуру, которая содержит все элементы вашего документа, не влияя на объем памяти приложения.
JDOM предоставляет множество служебных функций, которые можно использовать для проверки содержимого и структуры документа XML в случае, если документ хорошо структурирован и его структура известна.
преимущества
JDOM предоставляет разработчикам Java гибкость и простоту обслуживания кода синтаксического анализа XML. Это легкий и быстрый API.
Классы JDOM
JDOM определяет несколько классов Java. Вот самые распространенные занятия –
Документ – представляет весь документ XML. Объект Document часто называют деревом DOM.
Элемент – представляет элемент XML. Элемент объекта имеет методы для управления его дочерними элементами, его текстом, атрибутами и пространствами имен.
Атрибут – представляет атрибут элемента. Атрибут имеет метод для получения и установки значения атрибута. У него есть родительский тип и тип атрибута.
Текст – представляет текст тега XML.
Комментарий – представляет комментарии в документе XML.
Документ – представляет весь документ XML. Объект Document часто называют деревом DOM.
Элемент – представляет элемент XML. Элемент объекта имеет методы для управления его дочерними элементами, его текстом, атрибутами и пространствами имен.
Атрибут – представляет атрибут элемента. Атрибут имеет метод для получения и установки значения атрибута. У него есть родительский тип и тип атрибута.
Текст – представляет текст тега XML.
Комментарий – представляет комментарии в документе XML.
Общие методы JDOM
Когда вы работаете с JDOM, вы часто будете использовать несколько методов:
SAXBuilder.build (xmlSource) () – создать документ JDOM из источника xml.
Document.getRootElement () – Получить корневой элемент XML.
Element.getName () – Получить имя узла XML.
Element.getChildren () – Получить все прямые дочерние узлы элемента.
Node.getChildren (Name) – получает все прямые дочерние узлы с заданным именем.
Node.getChild (Name) – Получить первый дочерний узел с заданным именем.
SAXBuilder.build (xmlSource) () – создать документ JDOM из источника xml.
Document.getRootElement () – Получить корневой элемент XML.
Element.getName () – Получить имя узла XML.
Element.getChildren () – Получить все прямые дочерние узлы элемента.
Node.getChildren (Name) – получает все прямые дочерние узлы с заданным именем.
Node.getChild (Name) – Получить первый дочерний узел с заданным именем.
Java JDOM Parser – разбирать XML-документ
Шаги к использованию JDOM
Ниже приведены шаги, используемые при синтаксическом анализе документа с использованием JDOM Parser.
- Импорт пакетов, связанных с XML.
- Создать SAXBuilder
- Создать документ из файла или потока
- Извлечь корневой элемент
- Изучить атрибуты
- Изучить подэлементы
Импорт пакетов, связанных с XML
Создать DocumentBuilder
Создать документ из файла или потока
Извлечь корневой элемент
Изучить атрибуты
Изучить подэлементы
Демо-пример
Вот входной XML-файл, который нам нужно проанализировать –
DomParserDemo.java
Это даст следующий результат –
Java JDOM Parser – Запрос XML-документа
Демо-пример
Вот входной XML-файл, который нам нужно запросить –
QueryXmlFileDemo.java
Это даст следующий результат –
Java JDOM Parser – Создание XML-документа
Демо-пример
Вот XML-файл, который нам нужно создать –
CreateXmlFileDemo.java
Это даст следующий результат –
Java JDOM Parser – Изменить XML-документ
Демо-пример
Вот входной текстовый файл, который нам нужно изменить –
ModifyXmlFileDemo.java
Это даст следующий результат –
Java StAX Parser – Обзор
StAX – это API на основе Java для анализа XML-документа аналогично SAX-анализатору. Но есть два основных различия между двумя API –
StAX – это API-интерфейс PULL, а SAX – это API-интерфейс PUSH. Это означает, что в случае синтаксического анализатора StAX клиентское приложение должно запрашивать синтаксический анализатор StAX для получения информации из XML всякий раз, когда это необходимо. Но в случае парсера SAX клиентское приложение должно получать информацию, когда парсер SAX уведомляет клиентское приложение о том, что информация доступна.
StAX API может читать и писать документы XML. Используя SAX API, XML-файл можно только читать.
StAX – это API-интерфейс PULL, а SAX – это API-интерфейс PUSH. Это означает, что в случае синтаксического анализатора StAX клиентское приложение должно запрашивать синтаксический анализатор StAX для получения информации из XML всякий раз, когда это необходимо. Но в случае парсера SAX клиентское приложение должно получать информацию, когда парсер SAX уведомляет клиентское приложение о том, что информация доступна.
StAX API может читать и писать документы XML. Используя SAX API, XML-файл можно только читать.
Настройка среды
Чтобы использовать анализатор StAX, у вас должен быть stax.jar в пути к классу вашего приложения.
Ниже приведены функции API StAX –
Читает XML-документ сверху вниз, распознавая токены, которые составляют правильно сформированный XML-документ.
Токены обрабатываются в том же порядке, в котором они появляются в документе.
Сообщает прикладной программе о природе токенов, с которыми анализатор сталкивался по мере их появления.
Прикладная программа предоставляет «читатель» события, который действует как итератор и выполняет итерацию по событию, чтобы получить необходимую информацию. Другой доступный читатель – это «курсор», который действует как указатель на узлы XML.
Когда события идентифицированы, элементы XML могут быть извлечены из объекта события и могут быть обработаны в дальнейшем.
Читает XML-документ сверху вниз, распознавая токены, которые составляют правильно сформированный XML-документ.
Токены обрабатываются в том же порядке, в котором они появляются в документе.
Сообщает прикладной программе о природе токенов, с которыми анализатор сталкивался по мере их появления.
Прикладная программа предоставляет «читатель» события, который действует как итератор и выполняет итерацию по событию, чтобы получить необходимую информацию. Другой доступный читатель – это «курсор», который действует как указатель на узлы XML.
Когда события идентифицированы, элементы XML могут быть извлечены из объекта события и могут быть обработаны в дальнейшем.
Когда использовать?
Вы должны использовать анализатор StAX, когда –
Вы можете обрабатывать XML-документ линейно сверху вниз.
Документ не является глубоко вложенным.
Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.
Проблема, которая должна быть решена, включает в себя только часть XML-документа.
Данные становятся доступными, как только они анализируются парсером, поэтому StAX хорошо работает для XML-документа, который поступает через поток.
Вы можете обрабатывать XML-документ линейно сверху вниз.
Документ не является глубоко вложенным.
Вы обрабатываете очень большой XML-документ, дерево DOM которого будет занимать слишком много памяти. Типичные реализации DOM используют десять байтов памяти для представления одного байта XML.
Проблема, которая должна быть решена, включает в себя только часть XML-документа.
Данные становятся доступными, как только они анализируются парсером, поэтому StAX хорошо работает для XML-документа, который поступает через поток.
Недостатки SAX
У нас нет произвольного доступа к документу XML, так как он обрабатывается только для пересылки.
Если вам нужно отслеживать данные, которые анализатор видел или где анализатор изменил порядок элементов, то вы должны написать код и сохранить данные самостоятельно.
У нас нет произвольного доступа к документу XML, так как он обрабатывается только для пересылки.
Если вам нужно отслеживать данные, которые анализатор видел или где анализатор изменил порядок элементов, то вы должны написать код и сохранить данные самостоятельно.
Класс XMLEventReader
Этот класс предоставляет итератор событий, который можно использовать для итерации по событиям, возникающим при анализе XML-документа.
StartElement asStartElement () – Используется для получения значения и атрибутов элемента.
EndElement asEndElement () – Вызывается в конце элемента.
Символы asCharacters () – могут использоваться для получения таких символов, как CDATA, пробелы и т. Д.
StartElement asStartElement () – Используется для получения значения и атрибутов элемента.
EndElement asEndElement () – Вызывается в конце элемента.
Символы asCharacters () – могут использоваться для получения таких символов, как CDATA, пробелы и т. Д.
Класс XMLEventWriter
Этот интерфейс определяет методы для создания события.
add (Событие события) – Добавить событие, содержащее элементы в XML.
add (Событие события) – Добавить событие, содержащее элементы в XML.
Класс XMLStreamReader
Этот класс предоставляет итератор событий, который можно использовать для итерации по событиям, возникающим при анализе XML-документа.
int next () – Используется для получения следующего события.
boolean hasNext () – Используется для проверки, существуют ли другие события или нет.
String getText () – используется для получения текста элемента.
String getLocalName () – используется для получения имени элемента.
int next () – Используется для получения следующего события.
boolean hasNext () – Используется для проверки, существуют ли другие события или нет.
String getText () – используется для получения текста элемента.
String getLocalName () – используется для получения имени элемента.
Класс XMLStreamWriter
Этот интерфейс определяет методы для создания события.
writeStartElement (String localName) – добавляет начальный элемент с заданным именем.
writeEndElement (String localName) – добавляет конечный элемент с указанным именем.
writeAttribute (String localName, String value) – записывает атрибуты в элемент.
writeStartElement (String localName) – добавляет начальный элемент с заданным именем.
writeEndElement (String localName) – добавляет конечный элемент с указанным именем.
writeAttribute (String localName, String value) – записывает атрибуты в элемент.
Java StAX Parser – разбирать XML-документ
Демо-пример
Вот входной XML-файл, который нам нужно проанализировать –
StAXParserDemo.java
Это даст следующий результат –
Анализатор Java StAX – запрос XML-документа
Демо-пример
Вот входной XML-файл, который нам нужно проанализировать –
StAXParserDemo.java
Это даст следующий результат –
Java StAX Parser – создание XML-документа
Демо-пример
Вот XML, который нам нужно создать –
StAXCreateXMLDemo.java
Это даст следующий результат –
Java StAX Parser – Изменить XML-документ
Демо-пример
Вот XML, который нам нужно изменить –
StAXModifyDemo.java
Это даст следующий результат –
Java XPath Parser – Обзор
XPath является официальной рекомендацией Консорциума World Wide Web (W3C). Он определяет язык для поиска информации в файле XML. Он используется для обхода элементов и атрибутов XML-документа. XPath предоставляет различные типы выражений, которые можно использовать для запроса соответствующей информации из документа XML.
Что такое XPath?
Определения структуры – XPath определяет части документа XML, такие как элемент, атрибут, текст, пространство имен, инструкция обработки, комментарий и узлы документа.
Выражения пути – XPath предоставляет мощные выражения пути, такие как выбранные узлы или список узлов в документах XML.
Стандартные функции – XPath предоставляет богатую библиотеку стандартных функций для манипулирования строковыми значениями, числовыми значениями, сравнения даты и времени, манипулирования узлами и QName, манипулирования последовательностями, логическими значениями и т. Д.
Основная часть XSLT – XPath является одним из основных элементов в стандарте XSLT, и для работы с документами XSLT необходимо обладать достаточными знаниями XPath.
Рекомендация W3C – XPath является официальной рекомендацией Консорциума World Wide Web (W3C).
Определения структуры – XPath определяет части документа XML, такие как элемент, атрибут, текст, пространство имен, инструкция обработки, комментарий и узлы документа.
Выражения пути – XPath предоставляет мощные выражения пути, такие как выбранные узлы или список узлов в документах XML.
Стандартные функции – XPath предоставляет богатую библиотеку стандартных функций для манипулирования строковыми значениями, числовыми значениями, сравнения даты и времени, манипулирования узлами и QName, манипулирования последовательностями, логическими значениями и т. Д.
Основная часть XSLT – XPath является одним из основных элементов в стандарте XSLT, и для работы с документами XSLT необходимо обладать достаточными знаниями XPath.
Рекомендация W3C – XPath является официальной рекомендацией Консорциума World Wide Web (W3C).
Выражения XPath
XPath использует выражение пути для выбора узла или списка узлов в документе XML. Ниже приведен список полезных путей и выражений для выбора любого узла / списка узлов из XML-документа.
Выберите все узлы с заданным именем «nodename»
Выбор начинается с корневого узла
Выбор начинается с текущего узла, соответствующего выбору
Выбирает текущий узел
Выбирает родителя текущего узла
Пример – выбираются все узлы с именем «студент»
класс / студент
Пример – выбираются все элементы ученика, которые являются потомками класса
Выбирает все элементы ученика независимо от того, где они находятся в документе
Выберите все узлы с заданным именем «nodename»
Выбор начинается с корневого узла
Выбор начинается с текущего узла, соответствующего выбору
Выбирает текущий узел
Выбирает родителя текущего узла
Пример – выбираются все узлы с именем «студент»
класс / студент
Пример – выбираются все элементы ученика, которые являются потомками класса
Выбирает все элементы ученика независимо от того, где они находятся в документе
Предикаты
Предикаты используются для поиска определенного узла или узла, содержащего определенное значение, и определяются с помощью […].
| выражение | Результат |
|---|---|
| / Класс / студент [1] | Выбирает первый элемент ученика, который является дочерним элементом элемента класса. |
| / Класс / студент [последняя ()] | Выбирает последний элемент студента, который является дочерним элементом элемента класса. |
| / Класс / студент [последняя () – 1] | Выбирает последний, кроме одного студенческого элемента, который является дочерним элементом элемента класса. |
| // студент [@rollno = ‘493’] | Выбирает все элементы ученика, которые имеют атрибут с именем rollno со значением ‘493’ |
Java XPath Parser – Разбор XML-документа
Шаги к использованию XPath
Ниже приведены шаги, используемые при анализе документа с использованием XPath Parser.