Delphi XML绑定向导和可选元素

Delphi XML绑定向导和可选元素,xml,delphi,data-binding,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

在我的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中没有指定passingTime时,它就会崩溃。有什么办法可以解决这个问题吗?用巫师耍点小把戏?另外,我认为默认值被忽略。我必须手工编辑结果吗


顺便说一句,xsd.exe会生成xxx指定的字段,这在这里会有所帮助。

好的,XML数据绑定向导不考虑默认值,您必须手动对它们进行编码:

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

我怀疑这就是我最后要做的!谢谢
function TXMLScheduleLocation.Get_PassingTime: Boolean;
begin
  Result := ChildNodes['passingTime'].NodeValue;
end;
function TXMLScheduleLocation.Get_PassingTime: Boolean;
begin
 if ChildNodes['passingTime'].NodeValue = null then
  Result := false
 else
  Result := ChildNodes['passingTime'].NodeValue;
end;