xml - Delphi XML 绑定(bind)向导和可选元素

标签 xml delphi data-binding

在我的 XSD 中我有:

  <xs:complexType name="scheduleLocation">
    <xs:sequence>
      <xs:element name="arrivalTime" type="hhmmss" default="00:00:00" minOccurs="0"/>
      <xs:element name="departureTime" type="hhmmss" default="00:00:00" minOccurs="0"/>
      <xs:element name="passingTime" type="xs:boolean" default="false" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

意味着以下 XML 提取是有效的:

<scheduleLocation>
  <arrivalTime>07:33:00</arrivalTime>
  <departureTime>07:34:00</departureTime>
</scheduleLocation>

(即没有耗时节点)

使用 D6 XML 数据绑定(bind)向导我得到:

function TXMLScheduleLocation.Get_PassingTime: Boolean;
begin
  Result := ChildNodes['passingTime'].NodeValue;
end;

当然,如果我尝试获取传递时间值,那么它会在 XML 中未指定传递时间的地方崩溃。有什么办法解决这个问题 - 向导的一些技巧吗?另外,我认为默认值被忽略了。我是否需要手动编辑结果?

顺便说一句,xsd.exe 会生成 xxxSpecified 字段,这对这里有帮助。

最佳答案

据我所知,XML 数据绑定(bind)向导不考虑默认值,您必须手动对它们进行编码:

function TXMLScheduleLocation.Get_PassingTime: Boolean;
begin
 if ChildNodes['passingTime'].NodeValue = null then
  Result := false
 else
  Result := ChildNodes['passingTime'].NodeValue;
end;

关于xml - Delphi XML 绑定(bind)向导和可选元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878313/

相关文章:

c# - C#XML根据属性获取节点

delphi - indy GET 下载速度

wpf - 在 WPF 中使用数据绑定(bind)启动动画

Android MVVM + Databinding,以下代码是否包含对 View/Activity/Context 的引用导致泄漏?

java - Joda Time : new DateTime(String) vs DateTime. 解析(字符串)

python - 将 XML 转换为 CSV 文件

delphi - 带流缓冲区的 Directsound - 锁不会换行!使用 Delphi 移植的 DirectX header

delphi - 菜单加速键未显示 (Delphi 2009)

WPF ComboBox 绑定(bind)未按预期工作

xml - 当\n 字面打印时在 xml 文件中打印新行\n