Both StAX and SAX are a type of XML parser APIs. Here, API stands for Application Programming Interface and Parser is used to read and extract content from an XML document in desired format. From this line, it is clear that StAX and SAX are used to read XML documents.
APIs are a modern way to migrate real time information on the Web. In this article, we will discuss the difference between StAX and SAX Parser in Java.
StAX vs SAX Parser
XML
它的全称是可扩展标记语言(eXtensible Markup Language),据说它是一种数据描述语言。在其中,用户可以根据需要定义自己的标签。它以基于树的结构存储信息,使其简单易懂。
这是示例XML文档 −
Milk
65
15
Bread
30
10
Butter
40
5
登录后复制
Transferring data from one source to another source requires a transformation of the data format. By parsing methods like StAX and SAX, we can read and transform XML data into required format.
SAX Parser
它是Simple API for XML的缩写。它从头到尾逐行读取XML文档。每当在解析过程中遇到任何标签时,它调用方法并为用户检索信息。
For example, suppose we want to access the address from an XML document and there is a tag name ‘address’ in that document. In that case, when SAX parser reached that tag, it will call the method to retrieve the address.
SAX解析器的接口 −
-
SAXParserFactory − 它是解析器的对象,它是解析的第一个任务。
-
SAXParser − It defines a method named ‘parse()’ that is used for parsing.
-
SAXReader − 它处理与SAX事件处理程序的通信。
StAX Parser
It is an abbreviation of Streaming API for XML. It was developed to eliminate the limitation of SAX parser. It contains two APIs, one is cursor API and another one is event iterator API. The cursor API handles the reading and writing and the event iterator API handles the events.
StAX解析器的接口
-
XMLStreamReader
-
XMLStreamWriter
-
XMLEventReader
-
XMLEventWriter
Now let’s discuss the differences between StAX and SAX Parser. Consider the following table below −
SAX解析器 |
StAX解析器 |
---|---|
这是一个用于XML文档的简单API。 |
这是一个用于XML文档的流式API。 |
这是一种推送类型的API,意味着它会推送所需的数据。 |
这是一种拉取类型的API,意味着它拉取所需的数据。 |
SAX works on event based model. |
StAX工作不适用于基于事件的模型,而是适用于基于树的模型。 |
It can only perform reading operations on the XML document. |
It is bidirectional and can perform both reading and writing operations on the XML document. |
There is no or less control over the parsing process. It parses all the information even if we don't need them. |
StAX提供了对解析的完全控制。我们可以提取所需数据并丢弃不需要的数据。 |
It does not have any additional API. |
It provides two additional APIs cursor API and event iterator API. |
SAX以自上而下的方式读取XML文件,无法提供随机访问。 |
StAX也采用自上而下的读取方式,但提供对信息的随机访问。 |
Conclusion
在这篇文章中,我们区分了StAX和SAX解析器。在此过程中,我们发现了XML,它是一种数据描述语言。它提供了各种解析器,如StAX和SAX,用于读写XML文件。这两个解析器在许多方面相似,但在功能和工作方式上存在差异。
以上就是在Java中,StAX与SAX解析器的比较的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!