【问题标题】:Generating sample XML based on XSD produces invalid data for integer基于 XSD 生成示例 XML 会为整数生成无效数据
【发布时间】:2014-08-22 21:23:16
【问题描述】:

我在 Visual Studio 2010 中根据我的 xsd 文件使用“生成示例 XML”。但是,结果包含整数数据类型的无效数据。 有谁知道解决方法吗?

例如,对于类型为 type="xsd:integer" 的元素,我得到一个类似 -79724793284932479284902477492 的数字

非常感谢任何帮助!

【问题讨论】:

  • 你可以试试这个:xsd2xml.com
  • 感谢这位汤姆!我已经尝试过 xsd2xml.com。不幸的是,每个标签只生成一个实例。我需要一些能产生更多样本的东西。此外,它需要生成样本数据,例如“TagName1,TagName2,...而不是“string”。
  • 为什么你认为 -79724793284932479284902477492 不是一个有效的整数?当您的意思是 xsd:int 时,您使用的是 xsd:integer 吗?
  • @C. M. Sperberg-McQueen 当我将 xml 批量上传到数据库时会导致错误。我使用了“xsd:整数”。即使我在某些标签中使用“xsd:int”,它也会产生 10 位数的负数而不是 1、2 3、... 我该如何避免呢?
  • @C. M. Sperberg-McQueen 实际上将“xsd:integer”更改为“xsd:int”解决了这个问题。虽然我仍然得到十位数的负数,但它们可以上传到数据库。我猜是因为 xsd:integer 代表 longint!如果您愿意,请提供您的评论作为答案,以便我选择它。谢谢你的帮助! :)

标签: xml visual-studio-2010 xsd


【解决方案1】:

xsd:integer 的值空间是整数的集合。该集合包括与您指定的数字类似的数字,以及需要更多数字的数字,因此您使用的示例生成器在这里不会出错。

如果您需要确保这些值可以适合某些固定宽度的整数数据类型,那么您应该考虑使用 xsd:long、xsd:int、xsd:short 或 xsd:byte。如果要确保值是非负的,请考虑 xsd:unsignedLong、xsd:unsignedInt、xsd:unsignedShort 或 xsd:unsignedByte。

【讨论】:

  • 所以你的意思是没有办法生成整数序列?对于字符串数据类型,我得到像 TagName1、TagName2、TagnName3、... 这样的序列
  • 不,我没有说有关整数序列或您使用的工具可以和不能生成什么的任何内容。您最初的问题是您认为生成器正在生成 xsd:integer; 类型的无效示例;你的分析是不正确的,因为你给出的例子是完全有效的。我的答案是关于不同 XSD 数字类型的值空间以及需要说出你的意思和你所说的意思。
  • 对不起,我不清楚。你是对的,根据数据类型,生成的 xml 数据是正确的。我想知道 Visual Studio 中是否有任何方法可以为 xsd:unsignedShort 生成序列。谢谢你的帮助! :)
  • 听起来您可能想阅读 XSD 列表数据类型;它们将允许您在单个元素或属性中获得以空格分隔的整数序列(或其他简单类型)。
  • 很好的提示!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多