验证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和XSD的代码,但是我得到了很多错误。有人能给我一些关于错误消息(由java程序打印)的反馈吗

这是我试图验证的文档

<?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"> 
....