【问题标题】:xml error Element or attribute do not match QName production: QName::=(NCName':')?NCNamexml 错误元素或属性与 QName 生产不匹配:QName::=(NCName':')?NCName
【发布时间】:2025-11-27 22:35:02
【问题描述】:

这是我的 XML:

正如许多帖子所建议的那样,检查了结束标签..也许我仍然错过了一些东西。请帮忙。

这也是我作为源创建上述 xml 的 SOAP 请求 XML:

我为什么要这样做?我需要使用 WSDL 文件中的内联架构验证请求 XML,因此我提取了内联架构并创建了一个 XSD 文件。现在我需要一个请求 XML 来验证我已经创建的 XSD 文件。

【问题讨论】:

  • 你能指出错误发生在哪里,你的编辑器上的行号吗?一定有语法错误
  • 错误出现在第 2 行 - 元素类型“xmlns:ejb3”必须后跟属性规范“>”或“/>”。但我不知道它想让我把结束标签放在哪里。
  • 你可能忘记关闭元素了。 schemas.xmlsoap.org/soap/envelope" xmlns:ejb3="ejb3.examples.itko.com" />
  • @asok Buzz,第一个 xml 给出错误:ejb3.examples.itko.com"> abcddefg
  • 没有以正确的方式使用 xmlns:ejb3.examples.itko.com"> abcd6575 出错了,感谢尝试!

标签: java xml web-services wsdl xsd


【解决方案1】:

欢迎使用 Stack Overflow,并使用 XML。

您没有确切地说出问题是什么,但我猜它类似于“这里出了什么问题?”或“这个 XML 有什么问题?”

您显示的数据不是 XML,因为它的格式不正确。考虑字符串<xmlns:ejb3="http://ejb3.examples.itko.com/">。我想这是一个开始标签。

在 XML 中,开始标签以尖括号开始和结束,其中有一个元素类型名称,后跟零个或多个属性值规范或命名空间声明,彼此分隔,并与元素类型名称用空格分隔.

如果我们将字符串 xmlns:ejb3="http://ejb3.examples.itko.com/" 作为命名空间声明(实际上,在您说您复制数据的源中),那么您的问题是您的开始标签没有给出任何元素类型名称。 (第二个问题是数据流末尾的字符串</xmlns:ejb3> 看起来像是在尝试成为结束标记,但它使用的是命名空间属性名称,而它需要使用元素类型名称。)

另一方面,如果我们将<xmlns:ejb3 作为尖括号后跟元素类型名称,您的问题是 (a) 元素类型名称以保留字符串 'xml' 开头,现在允许XML 规范,以及 (b) 元素类型名称后面不是右尖括号或空格和属性值规范,而是等号和带引号的字符串——它看起来像一个片段的属性值规范缺少属性名称。

5 分钟的 XML 基础教程可以帮助您避免此类问题。与许多替代方案相比,XML 语法非常简单,但并不是任何人天生就知道的,而且您的经验表明,如果不花任何时间实际研究它,您是无法从示例中学会它的。

【讨论】:

    最近更新 更多