Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 值对于模式无效_Java_Xml_Validation_Xsd_Xstream - Fatal编程技术网

Java 值对于模式无效

Java 值对于模式无效,java,xml,validation,xsd,xstream,Java,Xml,Validation,Xsd,Xstream,我在XSD中有这个元素: <xs:simpleType name="elementWithAsterisks"> <xs:restriction base="xs:string"> <xs:length value="16"/> <xs:pattern value="^[0-9*]*$"/> </xs:restriction> </xs:simpleType> 如果我将这样的值发送到此元素,XStr

我在XSD中有这个元素:

<xs:simpleType name="elementWithAsterisks">
  <xs:restriction base="xs:string">
    <xs:length value="16"/>
    <xs:pattern value="^[0-9*]*$"/>
  </xs:restriction>
</xs:simpleType>
如果我将这样的值发送到此元素,XStream将返回以下消息:

cvc模式有效:值“1234567****01456”对无效 关于类型“elementWithAsterisks”的模式“^[0-9*]*$”

我正在使用Java和XStream。这是我验证它的代码:

try {
    File xsdFile = new File("validation.xsd");
    SchemaFactory schemaFactory = SchemaFactory.newInstance(SCHEMA_LANGUAGE);
    factory.setSchema(schemaFactory.newSchema(xsdFile);
    SAXParser saxParser = factory.newSAXParser();
    XMLReader reader = saxParser.getXMLReader();
    reader.setErrorHandler(new XmlValidationErrorHandler());
    reader.parse(new InputSource(inputStream));
    isValid = true;
} catch (SAXException | ParserConfigurationException | IOException ex) {
    ex.printStackTrace();
    isValid = false;
}

XSD中的正则表达式被
^
$
隐式包围。只需从
xs:pattern
中删除显式(冗余)XSD,您的XSD就会按预期工作:

  <xs:pattern value="[0-9*]*"/>

  <xs:pattern value="[0-9*]*"/>