如何解决错误:cvc-elt.1:如果没有命名空间,找不到元素'xsd:schema'的声明?

invzbl3

我正在使用input.xsd架构文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

    <xsd:element name="Mobiles">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Mobile" type="Mobile" maxOccurs="unbounded"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:complexType name="Mobile">
        <xsd:sequence>
            <xsd:element name="Model" type="xsd:string"/>
            <xsd:element name="OS">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="Android"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="Origin" type="xsd:string"/>
            <xsd:element name="Material" type="xsd:string"/>
            <xsd:element name="Samsung" type="Samsung"/>
        </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="Samsung" mixed="true">
        <xsd:sequence>
            <xsd:element name="Wlan">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="802.11"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>
            <xsd:element name="CardSlot" type="xsd:string"/>
            <xsd:element name="RadioAvailability" type="xsd:boolean" default="true"/>
            <xsd:element name="BluetoothAvailability" type="xsd:boolean" default="false"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

input.xml文件看起来像:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Mobiles
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="input.xsd">
    <Mobile>
        <Model>G975F</Model>
        <OS>Android</OS>
        <Origin>USA</Origin>
        <Material>Plastic</Material>
        <Samsung>
            <Wlan>802.11</Wlan>
            <CardSlot>MicroSD</CardSlot>
            <RadioAvailability>true</RadioAvailability>
            <BluetoothAvailability>true</BluetoothAvailability>
        </Samsung>
    </Mobile>
    <Mobile>
        <Model>G986</Model>
        <OS>Android</OS>
        <Origin>USA-Israel</Origin>
        <Material>Silicon-Plastic</Material>
        <Samsung>
            <Wlan>802.11</Wlan>
            <CardSlot>MicroSD</CardSlot>
            <RadioAvailability>true</RadioAvailability>
            <BluetoothAvailability>false</BluetoothAvailability>
        </Samsung>
    </Mobile>
    <Mobile>
        <Model>G770F</Model>
        <OS>Android</OS>
        <Origin>Israel</Origin>
        <Material>Silicon-Plastic</Material>
        <Samsung>
            <Wlan>802.11</Wlan>
            <CardSlot>MicroSD</CardSlot>
            <RadioAvailability>true</RadioAvailability>
            <BluetoothAvailability>false</BluetoothAvailability>
        </Samsung>
    </Mobile>
</Mobiles>

我以这个答案为例,其中没有用于模式的名称空间,这是为了更好地理论理解。

但是,当我尝试验证xsd架构文件时,总是在本地控制台中遇到问题:

cvc-elt.1: Cannot find the declaration of element 'xsd:schema'.
org.xml.sax.SAXParseException; systemId: file:///F:/IdeaProject/TestProject/input.xsd; lineNumber: 2; columnNumber: 58; cvc-elt.1: Cannot find the declaration of element 'xsd:schema'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1901)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:741)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3132)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:852)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:177)
    at com.epam.rd.java.basic.practice7.controller.DOMController.parse(DOMController.java:96)
    at com.epam.rd.java.basic.practice7.controller.DOMController.main(DOMController.java:331)
    at com.epam.rd.java.basic.practice7.DOMControllerTest.main(DOMControllerTest.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
    at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
    at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    at java.lang.Thread.run(Thread.java:748) 

使用逻辑进行验证,例如:

public void parse(boolean validate) throws ParserConfigurationException, SAXException, IOException {
            
    System.out.println("Invoking parse()");
    // obtain DOM parser
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    
    try{
        dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
        dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);

    } catch(ParserConfigurationException exp){
        logger.severe(MESSAGE);
        logger.severe(Arrays.toString(exp.getStackTrace()));
    }
    
    // set properties for Factory

    // XML document contains namespaces
    dbf.setNamespaceAware(true);

    // make parser validating
    if (validate) {
        // turn validation on
        dbf.setFeature(Constants.FEATURE_TURN_VALIDATION_ON, true);

        // turn on xsd validation
        dbf.setFeature(Constants.FEATURE_TURN_SCHEMA_VALIDATION_ON, true);
    }

    DocumentBuilder db = dbf.newDocumentBuilder();

    // set error handler
    db.setErrorHandler(new DefaultHandler() {
        @Override
        public void error(SAXParseException e) throws SAXException {
            // throw exception if XML document is NOT valid
            throw e;
        }
    });

    // parse XML document
    Document document = db.parse(xmlFileName);

    // get root element
    Element root = document.getDocumentElement();

    // create container
    mobiles = new Mobiles();

    // obtain mobiles nodes
    NodeList mobileNodes = root
            .getElementsByTagName(Names.MOBILE);

    // process mobiles nodes
    for (int j = 0; j < mobileNodes.getLength(); j++) {
        Mobile question = getMobile(mobileNodes.item(j));
        // add mobile to container
        mobiles.getMobileList().add(question);
    }
}

我已经检查了类似的问题,例如,这个问题,但是我没有urihttphttps

我也检查了这个答案,但是由于实现限制,我不能将任何第三方依赖项用于gradle项目(仅当它不是唯一的解决方案时)。

CoreFiling XML模式验证器报告有关XML模式和XML实例的信息:

XML instance present.
XML schema present.

Well Formed: VALID
Schema Validation: VALID

如果需要,我可以提供更多信息。如果我做错了什么,有人可以纠正我吗?提前致谢。

克休斯

错误,

cvc-elt.1:找不到xsd:schema没有名称空间的元素的声明

通常表示将XSD传递给验证器作为验证的对象,而不是传递预期的XML文件的错误尝试。

在您的情况下,请确保该xmlFileName文件用于XML文件,而不是XSD。

另一方面,如果您实际上要验证XSD本身,请参见

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

xsd验证失败,并显示cvc-elt.1:找不到元素的声明

来自分类Dev

cvc-elt.1:找不到元素的声明

来自分类Dev

cvc-elt.1:找不到元素'beans'的声明

来自分类Dev

cvc-elt.1:找不到元素'data'的声明

来自分类Dev

cvc-elt.1:找不到元素的声明

来自分类Dev

cvc-elt.1.a:找不到元素“ ear”的声明

来自分类Dev

在Spring应用程序中遇到错误:cvc-elt.1:找不到元素'beans'的声明

来自分类Dev

我该如何治愈... cvc-elt.1:找不到元素'jaxb:bindings'的声明

来自分类Dev

XSD验证错误:找不到元素'xs:schema'的声明

来自分类Dev

Jaxb2Marshaller cvc-elt.1:即使知道类元素,也找不到元素的声明

来自分类Dev

找不到元素'xsd:schema'的声明

来自分类Dev

找不到元素'xsd:schema'的声明

来自分类Dev

org.xml.sax.SAXParseException; lineNumber:6;columnNumber:122; cvc-elt.1:找不到元素'beans'的声明

来自分类Dev

当相同名称空间的两个XSD声明相同元素时,JAXB如何解决“已定义”错误

来自分类Dev

如何解决“符号没有可见的声明错误”

来自分类Dev

XSD验证错误:找不到元素'soapenv:Envelope'的声明

来自分类Dev

第2行错误:找不到元素'xs:schema'的声明

来自分类Dev

如果声明php,该如何解决?

来自分类Dev

XSD验证“找不到元素的声明”

来自分类Dev

如何解决“错误:无效的awn :: vala_array_destroy没有以前的声明”?

来自分类Dev

cvc-elt.1: Cannot find the declaration of element

来自分类Dev

如何解决“错误:'_ 1'未在此范围内声明”?

来自分类Dev

XSD错误:验证根没有可用的匹配全局声明

来自分类Dev

如何解决TypeScript错误:TS2234:接口的所有声明必须具有相同的类型参数

来自分类Dev

我该如何解决该错误后续属性声明必须具有相同的类型。角度9

来自分类Dev

如何使用我自己的声明文件解决“找不到模块的声明文件”错误?

来自分类Dev

错误消息,带有弹簧“找不到元素'beans'的声明。”

来自分类Dev

C ++:如何解决隐式声明编译错误?

来自分类Dev

XML解析异常org.xml.sax.SAXParseException cvc-elt.1

Related 相关文章

  1. 1

    xsd验证失败,并显示cvc-elt.1:找不到元素的声明

  2. 2

    cvc-elt.1:找不到元素的声明

  3. 3

    cvc-elt.1:找不到元素'beans'的声明

  4. 4

    cvc-elt.1:找不到元素'data'的声明

  5. 5

    cvc-elt.1:找不到元素的声明

  6. 6

    cvc-elt.1.a:找不到元素“ ear”的声明

  7. 7

    在Spring应用程序中遇到错误:cvc-elt.1:找不到元素'beans'的声明

  8. 8

    我该如何治愈... cvc-elt.1:找不到元素'jaxb:bindings'的声明

  9. 9

    XSD验证错误:找不到元素'xs:schema'的声明

  10. 10

    Jaxb2Marshaller cvc-elt.1:即使知道类元素,也找不到元素的声明

  11. 11

    找不到元素'xsd:schema'的声明

  12. 12

    找不到元素'xsd:schema'的声明

  13. 13

    org.xml.sax.SAXParseException; lineNumber:6;columnNumber:122; cvc-elt.1:找不到元素'beans'的声明

  14. 14

    当相同名称空间的两个XSD声明相同元素时,JAXB如何解决“已定义”错误

  15. 15

    如何解决“符号没有可见的声明错误”

  16. 16

    XSD验证错误:找不到元素'soapenv:Envelope'的声明

  17. 17

    第2行错误:找不到元素'xs:schema'的声明

  18. 18

    如果声明php,该如何解决?

  19. 19

    XSD验证“找不到元素的声明”

  20. 20

    如何解决“错误:无效的awn :: vala_array_destroy没有以前的声明”?

  21. 21

    cvc-elt.1: Cannot find the declaration of element

  22. 22

    如何解决“错误:'_ 1'未在此范围内声明”?

  23. 23

    XSD错误:验证根没有可用的匹配全局声明

  24. 24

    如何解决TypeScript错误:TS2234:接口的所有声明必须具有相同的类型参数

  25. 25

    我该如何解决该错误后续属性声明必须具有相同的类型。角度9

  26. 26

    如何使用我自己的声明文件解决“找不到模块的声明文件”错误?

  27. 27

    错误消息,带有弹簧“找不到元素'beans'的声明。”

  28. 28

    C ++:如何解决隐式声明编译错误?

  29. 29

    XML解析异常org.xml.sax.SAXParseException cvc-elt.1

热门标签

归档