验证xml和xsd中枚举的java程序
我需要检测枚举中的错误 这是我用枚举验证XML和XSD的代码,但是我得到了很多错误。有人能给我一些关于错误消息(由java程序打印)的反馈吗 这是我试图验证的文档验证xml和xsd中枚举的java程序,java,xml,xsd,Java,Xml,Xsd,我需要检测枚举中的错误 这是我用枚举验证XML和XSD的代码,但是我得到了很多错误。有人能给我一些关于错误消息(由java程序打印)的反馈吗 这是我试图验证的文档 <?xml version="1.0" encoding="UTF-8"?> <person name="avinash" age="27" gender="male"> <address type="email">xgjjkk@gmail.com</address>
<?xml version="1.0" encoding="UTF-8"?>
<person name="avinash" age="27" gender="male">
<address type="email">xgjjkk@gmail.com</address>
<address type="phone">khkhlll</address>
<address type="company">jgjhgjhgk</address>
</person>
这些是我得到的错误
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/persondetails" xmlns:tns="http://www.example.org/persondetails" elementFormDefault="qualified">
<element name="person">
<complexType>
<sequence>
<element name="address">
<complexType>
<attribute name="type">
<simpleType>
<restriction base="string">
<enumeration value="email"></enumeration>
<enumeration value="phone"></enumeration>
<enumeration value="company"></enumeration>
</restriction>
</simpleType>
</attribute>
</complexType>
</element>
</sequence>
<attribute name="name" type="string"></attribute>
<attribute name="age" type="int"></attribute>
<attribute name="gender" type="string"></attribute>
</complexType>
</element>
</schema>
package com.pack.group;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
public class Error {
public static void main(String[] args) throws Exception {
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource("D:/project/enum1.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StreamSource("D:/project/enum.xml"));
}
}
线程“main”org.xml.sax.SAXParseException中的异常:cvc elt.1:
找不到元素“person”的声明。在
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
在
com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
在
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
在
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
在
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handlestarelement(XMLSchemaValidator.java:1916)
在
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
您的模式将
address
声明为空元素(它只能包含属性),因此您的实例将不会验证
如果希望在address
元素中允许简单文本内容,则需要以不同的方式声明它,将属性声明作为元素简单内容的扩展:
<element name="address">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="type">
<simpleType>
<restriction base="string">
<enumeration value="email"></enumeration>
<enumeration value="phone"></enumeration>
<enumeration value="company"></enumeration>
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
</element>
您需要在您的问题中添加哪些Java错误,以便人们能够提供帮助。在@helderdarocha所说的更改之后,我验证了它之后,我得到了一个错误cvc elt。1:找不到元素“person”的声明。
<element name="person">
<complexType>
<sequence>
<element name="address" maxOccurs="unbounded">
....