Java 正则表达式提取 SOAP 错误信息 - 匹配 faultstring 标签内容

在处理 SOAP Web 服务时,当发生错误时,服务端通常会返回包含错误信息的 SOAP 响应。 其中, 标签通常包含了具体的错误信息。本文将介绍如何使用 Java 正则表达式来匹配和提取 标签中的内容。

代码示例

以下代码展示了如何使用 Java 正则表达式来匹配 SOAP 响应中的 标签内容:

String response = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
' + 
                  '    <soap:Body>
' + 
                  '        <soap:Fault>
' + 
                  '            <faultcode>soap:Server</faultcode>
' + 
                  '            <faultstring>com.landray.kmss.sys.metadata.exception.KmssUnExpectFieldException: 无法识别的字段:fd_396ea85762665d(流程管理:com.landray.kmss.km.review.model.KmReviewMain)\xd;
' + 
                  '</faultstring>
' + 
                  '            <detail>
' + 
                  '                <ns1:Exception xmlns:ns1="http://webservice.review.km.kmss.landray.com/"/>
' + 
                  '            </detail>
' + 
                  '        </soap:Fault>
' + 
                  '    </soap:Body>
' + 
                  '</soap:Envelope>';

Pattern pattern = Pattern.compile('<faultstring>(.*?)</faultstring>');
Matcher matcher = pattern.matcher(response);
if (matcher.find()) {
    String faultString = matcher.group(1);
    System.out.println(faultString);
}

解析

  1. 定义正则表达式:

    • '<faultstring>(.*?)</faultstring>' 这个正则表达式用于匹配 标签及其内容。
    • (.*?) 表示匹配任意字符,非贪婪模式,尽可能少的匹配。
  2. 创建 Pattern 对象:

    • Pattern.compile(regex) 根据正则表达式创建 Pattern 对象。
  3. 创建 Matcher 对象:

    • pattern.matcher(response) 使用 Pattern 对象和待匹配的 SOAP 响应字符串创建 Matcher 对象。
  4. 匹配查找:

    • matcher.find() 查找第一个匹配的字符串。
  5. 获取匹配结果:

    • matcher.group(1) 获取第一个匹配的子组(即 标签中的内容)。

输出结果

com.landray.kmss.sys.metadata.exception.KmssUnExpectFieldException: 无法识别的字段:fd_396ea85762665d(流程管理:com.landray.kmss.km.review.model.KmReviewMain)\xd;

通过以上步骤,我们成功地使用 Java 正则表达式提取了 SOAP 错误响应中的 标签内容。 这对于解析和处理 SOAP 错误信息非常有用。

Java 正则表达式提取 SOAP 错误信息 - 匹配 faultstring 标签内容

原文地址: https://www.cveoy.top/t/topic/nu4s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录