- 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