gpt4 book ai didi

java - 根据正则表达式,Castor 未将值识别为有效

转载 作者:行者123 更新时间:2023-12-01 14:10:57 35 4
gpt4 key购买 nike

我有一个奇怪的问题,我的 Castor-Maven-Plugin 生成的 java 类无法解码 XML 字符串的内容。

我尝试验证的 XML 如下所示:

...
<mediaType>audio/media</mediaType>
...

我正在根据以下模式验证它:

(音频|视频|文档|应用程序|示例|图像|消息|模型|多部分|文本)/.+

Castor 从中生成类的 XSD 的相关部分:

...  
<xs:simpleType name="mediaType">
<xs:annotation>
<xs:documentation>
The internet media type of the paired file. For example, a MP3 file would be audio/mpeg.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="(audio|video|document|application|example|image|message|model|multipart|text)/.+"/>
</xs:restriction>
</xs:simpleType>
...

当我尝试解码 XML 字符串时,抛出以下异常:

org.exolab.castor.xml.MarshalException: The following exception occured while validating field: _mediaType of class: my.domain.GeneratedClass: audio/mpegdoes not match the required regular expression: "(audio|video|document|application|example|image|message|model|multipart|text)/.+"{File: [not available]; line: 23; column: 12}...

现在,根据 IntelliJ 的 XML 验证和我尝试过的所有其他正则表达式工具,这应该不是问题。为什么卡斯特似乎这么认为?

最佳答案

Castor 没有(好的) native 正则表达式 validator ,您必须在配置文件中指定一个。请参阅http://castor.codehaus.org/conf-lib.html

将名为castor.properties的配置文件添加到包含以下内容的类路径:

org.exolab.castor.regexp=org.exolab.castor.util.JakartaRegExpEvaluator

您可能还需要将 Jakarta Regex 的依赖项添加到 Maven:

 <dependency>
<groupId>jakarta-regexp</groupId>
<artifactId>jakarta-regexp</artifactId>
<version>1.4</version>
</dependency>

关于java - 根据正则表达式,Castor 未将值识别为有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18533088/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com