cvc-complex-type.3.2.2: 属性 setHeader 不允许出现在元素 headerName (Camel)

cvc-complex-type.3.2.2: Attribute setHeader is not allowed to appear in element headerName (Camel)

关于上面的错误,我已经看到了一堆解释,甚至在这个网站上......但是没有人对这两点足够清楚:

  1. 为什么会出现这个错误?
  2. 我怎样才能准确更正它?我必须在 Camel/Spring 引导项目中更改什么才能使它正常工作(什么文件、什么配置、xsd 的什么导入?我必须更改 POM?在哪里?等)

该错误意味着您正在根据模式验证文档,而该文档对模式无效;具体来说,它在名为 headerName 的元素上有一个名为 setHeader 的属性,而架构不允许该属性。

要更正它,请删除该属性。

从您的问题来看,您似乎不确定要验证的 XML 文档是什么,也不确定在哪里可以找到它。恐怕我帮不了你。

Apache Camel 元模型已修改。您需要调整模型或指向与模型版本匹配的 xsd 版本。

如果您要从 2.x 迁移到 3.x 版本,请参阅 https://camel.apache.org/manual/camel-3-migration-guide.html#_setheader_and_setproperty_in_xml_dsl

所以迁移

<setHeader headerName="foo"><simple>Hello ${body}</simple></setHeader>

<setHeader name="foo"><simple>Hello ${body}</simple></setHeader>

要适应 xsd 的正确版本,您需要更改 xsi:schemaLocation 并指向特定版本而不是“通用版本”。所以替换 https://camel.apache.org/schema/spring/camel-spring.xsd by https://camel.apache.org/schema/spring/camel-spring-2.25.4.xsd or https://camel.apache.org/schema/spring/camel-spring-3.17.0.xsd