gpt4 book ai didi

java - 为什么这个值在xsd的生成中是 '29801000199002684333'长,为什么不是varchar

转载 作者:行者123 更新时间:2023-11-30 01:46:19 25 4
gpt4 key购买 nike

我正在检查 xml 到 xsd 格式。但是当我尝试使用从该站点 https://www.tutorialspoint.com/xsd/xsd_validation.htm 获得的以下代码将 xml 格式数据转换为 xsd 时我想知道为什么 20 位数字显示长类型并且它给我以下错误

SAX Exception: cvc-maxInclusive-valid: Value '29801000199002684333' is not facet-valid with respect to maxInclusive '9223372036854775807' for type 'long'.

使用以下代码

  SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new File("out.xsd"));
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File("in.xml")));

如何避免这个问题,我想以 varchar 类型而不是 long 类型查看此数据

XSD 格式

<xsd:sequence>
<xsd:element name="account" minOccurs="0" type="xsd:long"/>
<xsd:element name="branchBIC" minOccurs="0" type="xsd:int"/>
<xsd:element name="branchCode" minOccurs="0" type="xsd:int"/>
<xsd:element name="currencyIsoCode" minOccurs="0" type="xsd:normalizedString"/>
</xsd:sequence>

XML 格式

   <account>40700810256895634168</account>
<branchBIC>040037470</branchBIC>
<branchCode>1</branchCode>
<currencyIsoCode>RUR</currencyIsoCode>

最佳答案

您的整篇文章都是关于 XML、XSD 和 Java,但您的问题不在于其中任何一个。您发布的 XSD 表明 account 的类型为 xsd:long,但您的 XML 的 account 值超出了 允许的最大值xsd:长。因此,根据您的 XSD,您的 XML 应该是无效的。

从您的评论来看,您似乎对所使用的工具选择类型 xsd:long 而不是 xsd:string 感到不满意。这应该是您问题的一个突出部分,而不是隐藏在注释中,因为您使用的 XsdGen 类是您问题的基础。

由于您的问题具体涉及 xsd-gen ,你应该提出 issue与该工具的开发人员一起。

关于java - 为什么这个值在xsd的生成中是 '29801000199002684333'长,为什么不是varchar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805904/

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