在 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. 解释代码

  1. 导入必要的包
  • org.w3c.dom.*:用于处理 XML 文档的 DOM 模型。
  • javax.xml.parsers.*:用于创建 XML 解析器。
  • java.io.*:用于处理输入输出流。
  1. 创建 DocumentBuilderFactoryDocumentBuilder 对象
  • DocumentBuilderFactory 用于创建 DocumentBuilder 对象。
  • DocumentBuilder 用于解析 XML 文档。
  1. 解析 XML 字符串
  • 使用 builder.parse(new InputSource(new StringReader(xmlString))) 方法将 XML 字符串解析为 Document 对象。
  1. 获取所有的 <part> 标签
  • 使用 document.getElementsByTagName("part") 方法获取所有的 <part> 标签节点。
  1. 遍历 <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"。