大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java XML解析器指南

Java XML解析器指南

更新時間:2022-05-07 11:19:17 來源:動力節點 瀏覽1586次

以下文章動力節點小編提供了 Java XML Parser 的概要。Java 的 XML 解析是一個獨立的 XML 組件,它解析一個 XML 文檔(在某些情況下,一個獨立的 DTD 或 XML 模式),以便它可以被用戶程序處理。它還可能包括一個 XSL 轉換 (XSLT) 處理器,用于使用 XSL 樣式表進行 XML 數據轉換。我們可以使用 XSLT 處理器簡單地將 XML 文檔從 XML 轉換為 XML、XML 轉換為 HTML 或幾乎任何其他基于文本的格式。

Java XML 解析器的語法

一般解析格式如下:

1. 使用 DOM

DOMParser parser = new DOMParser();

2. 使用 SAX

Parser parser = new SAXParser();

XML(可擴展標記語言)是一種標記語言,它指定了一組用于編碼文本的規則。為了解析和處理 XML 文檔,Java 提供了幾個庫。Java xml 解析器示例提供了讀取和更改 XML 文件的基本功能。

Java XML 解析器是如何工作的?

在解析 XML 文檔時,Java 有很多可能性。

以下是一些最廣泛使用的 Java XML 解析器:

DOM

薩克斯

JAXB

XML 流 API (Stax)

JAXB 和 Stax 是 Java 的新版本。Stax 解析器使用游標甚至迭代器 API 來解析 XML 文檔。它需要兩個接口 Event Reader 和 Event Writer 并且應用程序循環遍歷整個文檔以等待下一個等待 Event.API 類型的 Stax 被拉取并流式傳輸,不兼容 Xpath。拉解析允許客戶端控制應用程序線程并根據需要調用解析器方法。另一方面,推送處理允許解析器控制應用程序線程,客戶端只接受來自解析器的調用。抽象基類是 XMLParser。實例化解析器的 parse() 方法用于讀取 XML 文檔。

Java XML 解析器工作:

Java 的 XML Parser 接收 XML 文檔作為輸入。

使用 DOM 或 SAX 解析器接口解析 XML 文檔。

應用程序接收解析的 XML 并進一步完成工作。

SAX 解析器

SAX 代表 Simple API for XML,而 Push Parser 是面向流的 XML Parser。主要目標是讀取 XML 文件并創建事件以執行調用函數或使用回調例程。此解析器的工作方式與 Java 事件處理程序的工作方式相同。需要注冊處理程序來解析頁面并處理各種事件。

為了提供以下回調,SAX 解析器擴展了 Default Handler 類:

startElement:當找到開始標簽時,觸發此事件。

endElement:當遇到結束標簽時,觸發此事件。

characters:當找到一些文本數據時,觸發該事件。

Java XML 解析器示例

下面給出了提到的例子:

示例 #1

Java DOM 解析器。

代碼:

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public class Read {
private static final String FILENAME = "D:\\parser\\amaz.xml";
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File(FILENAME));
doc.getDocumentElement().normalize();
System.out.println("Root Element :" + doc.getDocumentElement().getNodeName());
System.out.println("------");
// get <staff>
NodeList list = doc.getElementsByTagName("amz");
for (int temp = 0; temp < list.getLength(); temp++) {
Node node = list.item(temp);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String id = element.getAttribute("id");
String office = element.getElementsByTagName("office").item(0).getTextContent();
String location = element.getElementsByTagName("location").item(0).getTextContent();
String Country = element.getElementsByTagName("Country").item(0).getTextContent();
NodeList companyNodeList = element.getElementsByTagName("company");
String company = companyNodeList.item(0).getTextContent();
String growth = companyNodeList.item(0).getAttributes().getNamedItem("growth").getTextContent();
System.out.println("Current Element :" + node.getNodeName());
System.out.println("Staff Id : " + id);
System.out.println("office : " + office);
System.out.println("location : " + location);
System.out.println("Country : " +Country);
System.out.printf("company [growth] : %,.2f [%s]%n%n", Float.parseFloat(company), growth);
}
}
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
}
}

amaz.xml:

此 XML 文件還包含 xml 屬性以及 xml 元素。

<?xml version="1.0"?>
<company>
<staff id="1001">
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary currency="USD">100000</salary>
</staff>
<staff id="2001">
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary currency="INR">200000</salary>
</staff>
</company>

解釋:

在上面的代碼中,首先將 dom 解析器包導入到應用程序中。

接下來,將創建 DocumentBuilder 對象。將 XML 文件帶到文檔對象中。最后,解析 XML 文件并將其保存在文檔類中。

輸出:

示例 #2

Java SAX 解析器。

代碼:

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class Read
{
public static void main(String args[])
{
try
{
SAXParserFactory f = SAXParserFactory.newInstance();
SAXParser saxP= f.newSAXParser();
DefaultHandler hdl = new DefaultHandler()
{
boolean fid = false;
boolean fname = false;
boolean fproduct = false;
boolean discount = false;
boolean dataware = false;
public void startElement( String sg, String pp,String q, Attributes a) throws SAXException
{
System.out.println("First Node :" + q);
if(q.equalsIgnoreCase("FID"))
{
fid=true;
}
if (q.equalsIgnoreCase("FNAME"))
{
fname = true;
}
if (q.equalsIgnoreCase("FPRODUCT"))
{
fproduct = true;
}
if (q.equalsIgnoreCase("DISCOUNT"))
{
discount = true;
}
if (q.equalsIgnoreCase("DATAWARE"))
{
dataware = true;
}
}
public void endElement(String u, String l, String qNa) throws SAXException
{
System.out.println("Final Node:" + qNa);
}
public void characters(char chr[], int st, int len) throws SAXException
{
if (fid)
{
System.out.println("FID : " + new String(chr, st, len));
fid = false;
}
if (fname)
{
System.out.println("Shop details: " + new String(chr, st, len));
sname = false;
}
if (fproduct)
{
System.out.println("Remaining Product: " + new String(chr, st, len));
fproduct = false;
}
if (discount)
{
System.out.println("discount given: " + new String(chr, st, len));
discount = false;
}
if (dataware)
{
System.out.println("location : " + new String(chr, st, len));
dataware= false;
}
}
};
saxParser.parse("D:\\parser\\amaz.xml", handler);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}

amaz.xml:

<?xml version="1.0"?>
<onlineshop>
<flipkart>
<fid>301</fid>
<fname> ethinic</fname>
<fproduct> kurtas</fproduct>
<discount> 10</discount>
<dataware> bangalore</dataware>
</flipkart>
<flipkart>
<fid>401</fid>
<fname> partywear</fname>
<fproduct> saree</fproduct>
<discount> 20</discount>
<dataware> mumbai</dataware>
</flipkart>
<flipkart>
<fid>501</fid>
<fname> kids</fname>
<fproduct> t-shirts</fproduct>
<discount> 12</discount>
<dataware> Uttarpradesh</dataware>
</flipkart>
</onlineshop>

解釋:

上面的代碼實現了一個 SAX 解析器,它從 Flipkart 購物文件中獲取一個新實例。它逐個節點解析。

輸出:

結論

Java XML 解析器用于讀取和驗證 XML 文檔。在上面的文章中,我們已經通過一個示例了解了不同類型的解析器。SAX 解析器比 DOM 解析器快。如果大家想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程從入門到精通,細致全面,通俗易懂,適合小白學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久久99国产精一区二区三区 | 久婷婷 | 在线 中文字幕 日韩 欧美 | 国产欧美亚洲精品第二区首页 | 91青青视频| 免费福利视频在线观看 | 韩国日本一级毛片免费视频 | 亚洲夜色 | 午夜在线不卡 | 亚洲精品老司机综合影院 | 四虎四虎1515hhcom | 精品久久久久久久免费加勒比 | 97在线观看免费版 | 日韩精品中文字幕视频一区 | 精品久久久久国产免费 | 四虎国产精品免费观看 | 亚洲视频在线精品 | 日韩毛片免费线上观看 | 九九亚洲综合精品自拍 | 亚洲精品欧美精品中文字幕 | 亚洲欧洲一区二区三区久久 | 一级a毛片免费观看久久精品 | 视频一区日韩 | 国产精品成人免费观看 | 亚洲酒色1314狠狠做 | 日本中文字幕有码 | 色在线视频 | 国产一级特黄高清免费大片 | 国产www在线观看 | 99国产在线播放 | 国产精品综合一区二区三区 | 色婷亚洲 | 国产三级精品三级男人的天堂 | 日日干日日操 | 久草视频资源在线 | 四虎免费看 | 精品国产乱码一区二区三区 | 可以免费观看一级毛片黄a 可以直接看的毛片 | 日本一级成人毛片免费观看 | 在线观看久久 | 日本欧美小视频 |