在 Java 中解析 XML 格式的字符串并提取特定标签的属性值,可以使用多种方法,例如 DOM 解析器、SAX 解析器或 StAX 解析器。这里我们使用 DOM 解析器来实现这个功能,因为它相对简单且适用于较小的 XML 文档。
以下是一个示例代码,展示如何解析 XML 格式的字符串并提取 <part>
标签中的 JSTH
属性值。如果 <part>
标签没有 JSTH
属性,则输出为空字符串或其他默认值。
1. 添加依赖
确保项目中包含 Java XML 解析相关的依赖。如果使用的是 Maven 项目,可以在 pom.xml
中添加以下依赖:
<dependencies>
<!-- Java XML Parsers -->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
2. 编写解析代码
创建一个 Java 类来解析 XML 并提取所需的属性值。
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class XmlParser {
public static void main(String[] args) {
String xmlString = "<root><part JSTH=\"value1\"></part><part></part><part JSTH=\"value3\"></part></root>";
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlString)));
// 获取所有的 <part> 标签
NodeList partNodes = document.getElementsByTagName("part");
for (int i = 0; i < partNodes.getLength(); i++) {
Node partNode = partNodes.item(i);
if (partNode.getNodeType() == Node.ELEMENT_NODE) {
Element partElement = (Element) partNode;
String jsthValue = partElement.getAttribute("JSTH");
System.out.println("JSTH attribute value: " + (jsthValue.isEmpty() ? "null" : jsthValue));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. 解释代码
- 导入必要的包:
org.w3c.dom.*
:用于处理 XML 文档的 DOM 模型。javax.xml.parsers.*
:用于创建 XML 解析器。java.io.*
:用于处理输入输出流。
- 创建
DocumentBuilderFactory
和DocumentBuilder
对象:
DocumentBuilderFactory
用于创建DocumentBuilder
对象。DocumentBuilder
用于解析 XML 文档。
- 解析 XML 字符串:
- 使用
builder.parse(new InputSource(new StringReader(xmlString)))
方法将 XML 字符串解析为Document
对象。
- 获取所有的
<part>
标签:
- 使用
document.getElementsByTagName("part")
方法获取所有的<part>
标签节点。
- 遍历
<part>
节点:
- 使用
for
循环遍历每一个<part>
节点。 - 检查节点类型是否为
Element
。 - 使用
partElement.getAttribute("JSTH")
方法获取JSTH
属性值。 - 如果
JSTH
属性值为空字符串,则输出 "null",否则输出属性值。
4. 运行代码
编译并运行上述代码,将看到输出结果:
JSTH attribute value: value1
JSTH attribute value: null
JSTH attribute value: value3
这样,就可以成功解析 XML 字符串并提取 <part>
标签中的 JSTH
属性值。如果 <part>
标签没有 JSTH
属性,输出将为 "null"。