c# - 字符串 '01/06/2015' 不是有效的 AllXsd 值

标签 c# xml sorting xsd dataset

我收到这个错误

The string '01/06/2015' is not a valid AllXsd value

我的 XSD 是:

<xs:element name="PassingDate">
                <xs:simpleType>
                <xs:restriction base="xs:date">
                <xs:pattern value="\d{2}[/]\d{2}[/]\d{4}"></xs:pattern>
                </xs:restriction>
                </xs:simpleType>
                </xs:element>

我正在将我的 XML 读入 DataSet,然后我必须根据 PassingDate 执行排序

如果我现在将 PassingDate 转换为数据类型日期,那么排序将仅基于字符串进行。这将导致错误的输出。

如何在 dd/MM/yyyy 中格式化日期?

最佳答案

您的 PassingDate 声明不会重新排列日期的组成部分——它只是进一步将这些组成部分限制在它们原来的位置。

您可以切换到纯正则表达式约束来接近:

<xs:element name="PassingDate">
  <xs:simpleType name="date">
    <xs:restriction base="xs:token">
      <xs:pattern value="[0-3][0-9]/[0-1][0-9]/[0-9]{4}" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

注意事项:

  1. 此方法不能完全防止天数过多的无效日期 对于给定的月份、闰年/平年等。
  2. YYYY-MM-DD 更适合国际交流。
  3. YYYY-MM-DD 更利于互操作性
  4. YYYY-MM-DD 更适合排序。

建议:为您的 XML 使用标准 type="xs:date" 并仅本地化数据输入/显示的日期格式。如果您坚持使用使用非标准日期格式的 XML,请研究预处理/后处理或编写自定义代码。您可能会从 here 得到一些想法。 .

关于c# - 字符串 '01/06/2015' 不是有效的 AllXsd 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37209945/

相关文章:

java - java 中的 Collections.Sort ArrayList

c# - 为什么在这个例子中(来自msdn),在GetEnumerator方法中,new PeopleEnum返回IEnumerator?

c# - 从 GUI 应用程序将消息打印到控制台 - C#

c# - Model/ViewModel 设计中的类继承错误

Android 约束布局显示属性 'android:layout_constraintWidth_percent' 未找到

java - 合并排序代码中的 ConcurrentModificationException

c# - 使用 .NET 检测 .ogg 文件属性? channel 数,每 channel 位数,采样率?

xml - org.apache.hadoop.hive.ql.metadata.HiveException:处理行{“xmldata” :“<?xml version=\” 1.0\“encoding=\” UTF-8\“?>”时,Hive运行时错误}

javascript - 无法使用 Javascript 显示 XML 元素名称

algorithm - 对于任何算法,其平均情况下的性能总是渐进地优于最坏情况下的性能,这是对还是错?