gpt4 book ai didi

java - 错误 : Invalid content was found starting with element 'X' . 应为 '{X}' 之一

转载 作者:数据小太阳 更新时间:2023-10-29 02:15:54 24 4
gpt4 key购买 nike

我正在尝试使用简单的 XSD 验证简单的 XML,但总是出现此错误:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'linux'. One of '{linux}' is expected.

为什么?找到标签“linux”,它是 {linux} 之一!

java代码:

public static void main(String[] args) {
try {
InputStream xml = new FileInputStream("data/test.xml");
InputStream xsd = new FileInputStream("data/test.xsd");

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(xsd));

Validator validator = schema.newValidator();
validator.validate(new StreamSource(xml));

log.info("OK!");
} catch (Exception e) {
log.error(":(");
log.error(e.getMessage());
}
}

数据/测试.xml:

<?xml version="1.0" encoding="utf-8"?>
<so xmlns="http://test/">
<linux>
<debian>true</debian>
<fedora>true</fedora>
</linux>
</so>

数据/测试.xsd

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://test/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="so">
<xs:complexType>
<xs:sequence>
<xs:element name="linux">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence></xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

最佳答案

因为模式没有指定 elementFormDefault="qualified",元素“linux”的本地元素声明是在没有命名空间中声明一个元素,但是实例在命名空间中有一个 linux 元素 “http://test/”。错误消息令人困惑,因为它未能明确指出问题出在命名空间上。

关于java - 错误 : Invalid content was found starting with element 'X' . 应为 '{X}' 之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18462941/

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