
- Java XML 教程
- Java XML 首頁
- Java XML 概述
- Java XML 解析器
- Java DOM 解析器
- Java DOM 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java SAX 解析器
- Java SAX 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- JDOM XML 解析器
- JDOM XML 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java StAX 解析器
- Java StAX 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java XPath 解析器
- Java XPath 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java DOM4J 解析器
- Java DOM4J 解析器
- 解析 XML 文件
- 查詢 XML 文件
- 建立 XML 文件
- 修改 XML 文件
- Java XML 有用資源
- Java XML - 問題與解答
- Java XML - 快速指南
- Java XML - 有用資源
- Java XML - 討論
Java DOM 解析器 - 查詢 XML 文件
Java DOM 解析器是 Java 中用於解析和查詢 XML 文件的 API。使用 Java DOM 解析器,我們可以查詢大型 XML 文件以獲取有關我們資料的資訊。手動檢查整個 XML 文件以獲取相關資訊並不容易。我們可以使用 getElementsByTagName() 方法根據其標籤名稱查詢 XML 元素。要根據屬性值查詢,可以使用 getAttribute() 方法。
使用 Java DOM 解析器查詢 XML
我們可以透過以下步驟在 Java 中使用 DOM 解析器查詢任何 XML 文件:
- 步驟 1:建立 DocumentBuilder 物件
- 步驟 2:讀取 XML
- 步驟 3:解析 XML 文件
- 步驟 4:查詢 XML 文件
請參閱此頁面瞭解前三個步驟。
步驟 4:查詢 XML 文件
在完成前三個步驟後,我們可以使用 DOM 方法根據我們的業務需求查詢 XML 文件。
按標籤名稱查詢元素
我們可以使用 Document 介面上的方法getElementsByTagName('carname')根據其標籤名稱查詢 XML 元素。此方法以字串形式獲取標籤名稱,並將具有相同標籤名稱的節點列表作為 NodeList 返回。
Node 介面的getTextContent()方法以字串形式提供節點內部的文字內容。
cars.xml
cars.xml 檔案在根元素<cars>內部有七個<carname>元素。
<?xml version = "1.0"?> <cars> <carname company="Ferrari" >Ferrari 101</carname> <carname company="Lamborghini">Lamborghini 001</carname> <carname company="Lamborghini">Lamborghini 002</carname> <carname company="Lamborghini">Lamborghini 003</carname> <carname company="Bentley">Bentley 1</carname> <carname company="Bentley">Bentley 2</carname> <carname company="Bentley">Bentley 3</carname> </cars>
查詢 XML 元素
在以下程式中,我們將所有節點放入 nodeList 中,然後迭代每個節點以獲取文字內容並檢查它是否等於“Bentley 2”。如果找到,我們將在控制檯上列印已找到,否則列印未找到。
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import java.io.File; public class QueryXMLDemo { public static void main(String argv[]) { try { //Creating a DocumentBuilder Object DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); //Reading the XML file File inputFile = new File("cars.xml"); //Parsing the XML Document Document doc = dBuilder.parse(inputFile); //checking "Bentley 2" car int flag=0; NodeList nList = doc.getElementsByTagName("carname"); for(int i=0;i<nList.getLength();i++) { if(nList.item(i).getTextContent().equals("Bentley 2")) { System.out.println("Bentley 2 car is "+"found"); flag=1; break; } } if(flag==0) { System.out.println("Bentley 2 car is "+"not found"); } } catch (Exception e) {e.printStackTrace();} } }
輸出
由於存在“Bentley 2”汽車,因此顯示已找到。
Bentley 2 car is found
按屬性查詢元素
我們可以使用 Element 介面的getAttribute("Attribute_name")方法根據其屬性查詢元素。此方法將屬性名稱作為引數,並返回屬性的值。
示例
在以下程式中,我們已解析cars.xml檔案並在每次找到“Bentley”時遞增計數變數。
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Element; import java.io.File; public class QueryXMLAttributes { public static void main(String argv[]) { try { //Creating a DocumentBuilder Object DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); //Reading the XML file File inputFile = new File("cars.xml"); //Parsing the XML Document Document doc = dBuilder.parse(inputFile); //counting Bentley cars int count=0; NodeList nList = doc.getElementsByTagName("carname"); for(int i=0;i<nList.getLength();i++) { Element ele = (Element) nList.item(i); if(ele.getAttribute("company").equals("Bentley")) { count++; } } System.out.println("No of Bentley cars: "+ count); } catch (Exception e) {e.printStackTrace();} } }
輸出
以上程式計算 Bentley 汽車的數量並在控制檯上顯示。
No of Bentley cars: 3