IXMLNode 设置前缀和命名空间

问题描述 投票:0回答:4

这是我收到的一个 xml 文件,我想用 delphi 生成相同的输出。我使用 delphi xml 向导通过我的模式生成了一个大单元。

这就是我想要的输出(原始文件)

<?xml version="1.0" encoding="iso-8859-1"?><reh:Reha xmlns:reh="http://www.vdek.com/xml-schema/REH/1.8">
  <reh:logische_Version>1.6.0</reh:logische_Version> 
 <reh:KV>
 <reh:Kopfdaten>
  <kod:Erstellungsdatum_Uhrzeit xmlns:kod="http://www.vdek.com/xml-schema/KOD/1.2">2014-09-23T15:33:23</kod:Erstellungsdatum_Uhrzeit> 
  <kod:Version xmlns:kod="http://www.vdek.com/xml-schema/KOD/1.2">1.2.0</kod:Version> 
  <kod:Dateinummer xmlns:kod="http://www.vdek.com/xml-schema/KOD/1.2">000010</kod:Dateinummer> 
 <kod:Identifikationsdaten xmlns:kod="http://www.vdek.com/xml-schema/KOD/1.2">
  <kod:IK_Absender>108018007</kod:IK_Absender> 
  <kod:IK_Empfaenger>510800000</kod:IK_Empfaenger> 
  <kod:IK-Kostentraeger>108018007</kod:IK-Kostentraeger> 
  <kod:IK_Einrichtung>510800000</kod:IK_Einrichtung> 
  </kod:Identifikationsdaten>
 <kod:Fall_ID_KV xmlns:kod="http://www.vdek.com/xml-schema/KOD/1.2">
  <kod:Krankenversichertennummer>I123456789</kod:Krankenversichertennummer> 
  <kod:Versichertenstatus>50001</kod:Versichertenstatus> 
  <kod:Kartengueltigkeit>1712</kod:Kartengueltigkeit> 
  <kod:Fallnummer>01800000099988877</kod:Fallnummer> 
  </kod:Fall_ID_KV>
    <reh:Dateinummer></reh:Dateinummer>
    </reh:Kopfdaten>
 <reh:Bewilligung>
 <bew:Admindaten xmlns:bew="http://www.vdek.com/xml-schema/BEW/1.5">
  <bew:Verarbeitungskennzeichen>10</bew:Verarbeitungskennzeichen> 
  <bew:Version>1.5.0</bew:Version> 
  <bew:LfdNr>01</bew:LfdNr> 
  </bew:Admindaten>
 <bew:Fachliche_Daten xmlns:bew="http://www.vdek.com/xml-schema/BEW/1.5">
 <bew:Rehabilitand>
  <bew:Anrede>1</bew:Anrede> 
 <bew:Name>
  <bty:Nachname xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">Mustermann</bty:Nachname> 
  <bty:Vorname xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">Max</bty:Vorname> 
  </bew:Name>
  <bew:Geschlecht>1</bew:Geschlecht> 
  <bew:Geburtsdatum>1950-08-21</bew:Geburtsdatum> 
 <bew:Adresse>
  <bty:Strasse xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">Saonestr.</bty:Strasse> 
  <bty:Hausnummer xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">3</bty:Hausnummer> 
  <bty:Wohnort xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">Frankfurt</bty:Wohnort> 
  <bty:PLZ xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">60528</bty:PLZ> 
  <bty:Laenderkennzeichen xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">D</bty:Laenderkennzeichen> 
  </bew:Adresse>
 <bew:Kommunikation>
  <bty:Telefon xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">069/12345</bty:Telefon> 
  </bew:Kommunikation>
  </bew:Rehabilitand>
 <bew:Kosteninformationen>
 <bew:Zuzahlung>
  <bew:Zuzahlungseinzug>2</bew:Zuzahlungseinzug> 
  <bew:AnzahlTage>028</bew:AnzahlTage> 
  <bew:Zuzahlungsbetrag>01000</bew:Zuzahlungsbetrag> 
  </bew:Zuzahlung>
  </bew:Kosteninformationen>
 <bew:Rehainformationen>
  <bew:Rehaart>93</bew:Rehaart> 
  </bew:Rehainformationen>
 <bew:Aufnahmedaten>
  <bew:IK_Krankenhaus>260612124</bew:IK_Krankenhaus> 
  <bew:Behandlungsart>1</bew:Behandlungsart> 
 <bew:Bewilligungsdiagnosen>
  <bew:Version_ICD>2014</bew:Version_ICD> 
 <bew:Diagnose>
  <bty:Diagnosenschluessel xmlns:bty="http://www.vdek.com/xml-schema/BTY/1.2">M151</bty:Diagnosenschluessel> 
  </bew:Diagnose>
  </bew:Bewilligungsdiagnosen>
 <bew:Aufnahmedaten>
  <bew:Erfolgt>N</bew:Erfolgt> 
  <bew:Geplant>2014-10-05</bew:Geplant> 
  </bew:Aufnahmedaten>
  <bew:Indikationsgruppe>SA</bew:Indikationsgruppe> 
  </bew:Aufnahmedaten>
 <bew:Bewilligungsinformationen>
  <bew:Bewilligungsdatum>2014-09-23</bew:Bewilligungsdatum> 
  <bew:Kostenzusage_gueltig_bis>2014-10-31</bew:Kostenzusage_gueltig_bis> 
  </bew:Bewilligungsinformationen>
 <bew:Stationaerdaten>
  <bew:Behandlungsabschnitte>01</bew:Behandlungsabschnitte> 
  <bew:bewilligte_Tage>020</bew:bewilligte_Tage> 
  </bew:Stationaerdaten>
  </bew:Fachliche_Daten>
    <reh:Fachliche_Daten>
        <reh:Rehabilitand/>
      </reh:Fachliche_Daten>
    </reh:Bewilligung>
  </reh:KV>
  <reh:Papieranlage>N</reh:Papieranlage> 
  </reh:Reha>

我的delphi代码

var
 XML: IXMLReha;
begin
  XML := NewReha;
  XML.OwnerDocument.Options := [doNodeAutoCreate, doNodeAutoIndent];
  XML.Logische_Version := '1.6.0';

  //Präfixe wie :bs, :reh fehlen noch

  {Kopfdaten}       //xmlns:kod
  Xml.KV.Kopfdaten.DeclareNamespace('kod', 'http://www.vdek.com/xml-schema/KOD/1.2');
  Xml.KV.Kopfdaten.Attributes['test'] := 'test2';

  XML.KV.Kopfdaten.Erstellungsdatum_Uhrzeit             := '2014-09-23T15:33:23';
  XML.KV.Kopfdaten.Version                              := '1.2.0';
  XML.KV.Kopfdaten.Dateinummer                          := '000010';

  XML.KV.Kopfdaten.Identifikationsdaten.IK_Absender     := '108018007';
  XML.KV.Kopfdaten.Identifikationsdaten.IK_Empfaenger   := '510800000';
  XML.KV.Kopfdaten.Identifikationsdaten.IKKostentraeger := '108018007';
  XML.KV.Kopfdaten.Identifikationsdaten.IK_Einrichtung  := '510800000';

  XML.KV.Kopfdaten.Fall_ID_KV.Krankenversichertennummer := 'I123456789';
  XML.KV.Kopfdaten.Fall_ID_KV.Versichertenstatus        := '50001';
  XML.KV.Kopfdaten.Fall_ID_KV.Kartengueltigkeit         := '1712';
  XML.KV.Kopfdaten.Fall_ID_KV.Fallnummer                := '01800000099988877';
  XML.KV.Kopfdaten.Dateinummer                          := '';


  {Bewilligung}
  XML.KV.Bewilligung.Admindaten.Verarbeitungskennzeichen := '10';
  XML.KV.Bewilligung.Admindaten.Version                  := '1.5.0';
  XML.KV.Bewilligung.Admindaten.LfdNr                    := '01';

  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Anrede         := '1';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Name.Nachname  := 'Mustermann';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Name.Vorname   := 'Max';

  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Geschlecht := '1';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Geburtsdatum := '1950-08-21';

  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Adresse.Strasse := 'Saonestr';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Adresse.Hausnummer := '3';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Adresse.Wohnort := 'Frankfurt';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Adresse.PLZ := '60528';
  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Adresse.Laenderkennzeichen := 'D';

  XML.KV.Bewilligung.Fachliche_Daten.Rehabilitand.Kommunikation.Telefon := '069/12345';

  { ...}

  //Dokument speichern
  XML.OwnerDocument.SaveToFile('\\Server\Gen.xml');
end;

我的输出是用我的delphi代码生成的

<?xml version="1.0"?>
<Reha xmlns="http://www.vdek.com/xml-schema/REH/1.8" xsi:schemaLocation="http://www.foo.com/Myxsd.xsd">
  <logische_Version>1.6.0</logische_Version>
  <KV>
    <Kopfdaten xmlns:kod="http://www.vdek.com/xml-schema/KOD/1.2" test="test2">
      <Erstellungsdatum_Uhrzeit>2014-09-23T15:33:23</Erstellungsdatum_Uhrzeit>
      <Version>1.2.0</Version>
      <Dateinummer></Dateinummer>
      <Identifikationsdaten>
        <IK_Absender>108018007</IK_Absender>
        <IK_Empfaenger>510800000</IK_Empfaenger>
        <IK-Kostentraeger>108018007</IK-Kostentraeger>
        <IK_Einrichtung>510800000</IK_Einrichtung>
      </Identifikationsdaten>
      <Fall_ID_KV>
        <Krankenversichertennummer>I123456789</Krankenversichertennummer>
        <Versichertenstatus>50001</Versichertenstatus>
        <Kartengueltigkeit>1712</Kartengueltigkeit>
        <Fallnummer>01800000099988877</Fallnummer>
      </Fall_ID_KV>
    </Kopfdaten>
    <Bewilligung>
      <Admindaten>
        <Verarbeitungskennzeichen>10</Verarbeitungskennzeichen>
        <Version>1.5.0</Version>
        <LfdNr>01</LfdNr>
      </Admindaten>
      <Fachliche_Daten>
        <Rehabilitand>
          <Anrede>1</Anrede>
          <Name>
            <Nachname>Mustermann</Nachname>
            <Vorname>Max</Vorname>
          </Name>
          <Geschlecht>1</Geschlecht>
          <Geburtsdatum>1950-08-21</Geburtsdatum>
          <Adresse>
            <Strasse>Saonestr</Strasse>
            <Hausnummer>3</Hausnummer>
            <Wohnort>Frankfurt</Wohnort>
            <PLZ>60528</PLZ>
            <Laenderkennzeichen>D</Laenderkennzeichen>
          </Adresse>
          <Kommunikation>
            <Telefon>069/12345</Telefon>
          </Kommunikation>
        </Rehabilitand>
      </Fachliche_Daten>
    </Bewilligung>
  </KV>
</Reha>

那么我如何在 ym xml 文件中像原始 xml 文件一样设置前缀/命名空间,例如 reh:, :kod ...?

如您所见,我不使用“.addchild”命令,所以我需要一个不同的答案。

xml delphi xsd xml-parsing
4个回答
3
投票
如果您有一个复杂的 XSD 架构,由多个文件组成,XML 数据绑定向导将无法创建正确的代码(正如您所注意到的)。在这种情况下,将所需的输出提供给在线 XML 到 XSD 转换器并将其用作数据绑定向导的输入会更容易。 我使用优秀的

XMLgrid 转换器制作了一个新的 XSD 文件(从您在此处发布的 XML 文件生成)

<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <!-- XML Schema Generated from XML Document on Thu Apr 09 2015 14:31:00 GMT+0200 (Romance Daylight Time) --> <!-- with XmlGrid.net Free Online Service http://xmlgrid.net --> <xs:element name="reh:Reha"> <xs:complexType> <xs:sequence> <xs:element name="reh:logische_Version" type="xs:string"></xs:element> <xs:element name="reh:KV"> <xs:complexType> <xs:sequence> <xs:element name="reh:Kopfdaten"> <xs:complexType> <xs:sequence> <xs:element name="kod:Erstellungsdatum_Uhrzeit" type="xs:dateTime"> <xs:complexType> <xs:attribute name="xmlns:kod" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="kod:Version" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:kod" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="kod:Dateinummer" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:kod" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="kod:Identifikationsdaten"> <xs:complexType> <xs:sequence> <xs:element name="kod:IK_Absender" type="xs:string"></xs:element> <xs:element name="kod:IK_Empfaenger" type="xs:string"></xs:element> <xs:element name="kod:IK-Kostentraeger" type="xs:string"></xs:element> <xs:element name="kod:IK_Einrichtung" type="xs:string"></xs:element> </xs:sequence> <xs:attribute name="xmlns:kod" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="kod:Fall_ID_KV"> <xs:complexType> <xs:sequence> <xs:element name="kod:Krankenversichertennummer" type="xs:string"></xs:element> <xs:element name="kod:Versichertenstatus" type="xs:string"></xs:element> <xs:element name="kod:Kartengueltigkeit" type="xs:string"></xs:element> <xs:element name="kod:Fallnummer" type="xs:string"></xs:element> </xs:sequence> <xs:attribute name="xmlns:kod" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="reh:Bewilligung"> <xs:complexType> <xs:sequence> <xs:element name="bew:Admindaten"> <xs:complexType> <xs:sequence> <xs:element name="bew:Verarbeitungskennzeichen" type="xs:string"></xs:element> <xs:element name="bew:Version" type="xs:string"></xs:element> <xs:element name="bew:LfdNr" type="xs:string"></xs:element> </xs:sequence> <xs:attribute name="xmlns:bew" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="bew:Fachliche_Daten"> <xs:complexType> <xs:sequence> <xs:element name="bew:Rehabilitand"> <xs:complexType> <xs:sequence> <xs:element name="bew:Anrede" type="xs:string"></xs:element> <xs:element name="bew:Name"> <xs:complexType> <xs:sequence> <xs:element name="bty:Nachname" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="bty:Vorname" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Geschlecht" type="xs:string"></xs:element> <xs:element name="bew:Geburtsdatum" type="xs:date"></xs:element> <xs:element name="bew:Adresse"> <xs:complexType> <xs:sequence> <xs:element name="bty:Strasse" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="bty:Hausnummer" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="bty:Wohnort" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="bty:PLZ" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> <xs:element name="bty:Laenderkennzeichen" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Kommunikation"> <xs:complexType> <xs:sequence> <xs:element name="bty:Telefon" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Kosteninformationen"> <xs:complexType> <xs:sequence> <xs:element name="bew:Zuzahlung"> <xs:complexType> <xs:sequence> <xs:element name="bew:Zuzahlungseinzug" type="xs:string"></xs:element> <xs:element name="bew:AnzahlTage" type="xs:string"></xs:element> <xs:element name="bew:Zuzahlungsbetrag" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Rehainformationen"> <xs:complexType> <xs:sequence> <xs:element name="bew:Rehaart" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Aufnahmedaten"> <xs:complexType> <xs:sequence> <xs:element name="bew:IK_Krankenhaus" type="xs:string"></xs:element> <xs:element name="bew:Behandlungsart" type="xs:string"></xs:element> <xs:element name="bew:Bewilligungsdiagnosen"> <xs:complexType> <xs:sequence> <xs:element name="bew:Version_ICD" type="xs:string"></xs:element> <xs:element name="bew:Diagnose"> <xs:complexType> <xs:sequence> <xs:element name="bty:Diagnosenschluessel" type="xs:string"> <xs:complexType> <xs:attribute name="xmlns:bty" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Aufnahmedaten"> <xs:complexType> <xs:sequence> <xs:element name="bew:Erfolgt" type="xs:string"></xs:element> <xs:element name="bew:Geplant" type="xs:date"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Indikationsgruppe" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Bewilligungsinformationen"> <xs:complexType> <xs:sequence> <xs:element name="bew:Bewilligungsdatum" type="xs:date"></xs:element> <xs:element name="bew:Kostenzusage_gueltig_bis" type="xs:date"></xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="bew:Stationaerdaten"> <xs:complexType> <xs:sequence> <xs:element name="bew:Behandlungsabschnitte" type="xs:string"></xs:element> <xs:element name="bew:bewilligte_Tage" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="xmlns:bew" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="reh:Papieranlage" type="xs:string"></xs:element> </xs:sequence> <xs:attribute name="xmlns:reh" type="xs:string"></xs:attribute> </xs:complexType> </xs:element> </xs:schema>

如果您将此 XSD 文件导入 XML 绑定向导,它将生成一个可以为您生成正确 XML 的单元。


2
投票
这是一个古老的 Delphi bug,也是每个想要在现代环境中使用 Delphi 进行高端编程的人都会面临的问题。 如果 XML 绑定向导遇到 @include 之类的东西,它往往会崩溃,因此,如果您有嵌套名称空间(或外部依赖项,就像现在大多数模式一样),那么您就不走运了。 但是添加命名空间是不可能的。在正常情况下,不需要它,因为 XML 解析器将解析名称,但如果两个文件使用相同的标识符 - 那么它将发生冲突并使 XML 变得无用。 你应该向 EMB 提出要求,让他们解决这个问题,就像我在 2 次所做的那样——也许这次他们会醒悟并做点什么。


2
投票
只是一个快速的解决方案,你可以让它变得更漂亮

using msxml; procedure TForm1.bt1Click(Sender: TObject); var Document: DOMDocument; RootNode, Node: IXMLDOMNode; const rehNameSpace: WideString = 'reh'; rehNameSpaceURI: WideString = 'http://www.vdek.com/xml-schema/REH/1.8'; kodNameSpace: WideString = 'kod'; kodNameSpaceURI: WideString = 'http://www.vdek.com/xml-schema/KOD/1.2'; begin Document := CoDOMDocument60.Create; RootNode := Document.createNode(NODE_ELEMENT, rehNameSpace + ':Reha', rehNameSpaceURI); Document.appendChild(RootNode); Node := Document.createNode(NODE_ELEMENT, rehNameSpace + ':logische_Version', rehNameSpaceURI); Node.text := '1.6.0'; RootNode.appendChild(Node); Node := Document.createNode(NODE_ELEMENT, rehNameSpace + ':KV', rehNameSpaceURI); RootNode.appendChild(Node); RootNode := Node; Node := Document.createNode(NODE_ELEMENT, rehNameSpace + ':Kopfdaten', rehNameSpaceURI); RootNode.appendChild(Node); RootNode := Node; Node := Document.createNode(NODE_ELEMENT, kodNameSpace + ':Erstellungsdatum_Uhrzeit', kodNameSpaceURI); Node.text := '2014-09-23T15:33:23'; RootNode.appendChild(Node); Node := Document.createNode(NODE_ELEMENT, kodNameSpace + ':Version', kodNameSpaceURI); Node.text := '1.2.0'; RootNode.appendChild(Node); Node := Document.createNode(NODE_ELEMENT, kodNameSpace + ':Dateinummer', kodNameSpaceURI); Node.text := '000010'; RootNode.appendChild(Node); Node := Document.createNode(NODE_ELEMENT, kodNameSpace + ':Identifikationsdaten', kodNameSpaceURI); RootNode.appendChild(Node); RootNode := Node; mmo1.Text := Document.xml; // TMemo end;
    

1
投票
通过数据绑定向导完成导入后,您可以对生成的文件进行后处理。您必须将第三个参数添加到

RegisterChildNode

 方法中,将第四个参数添加到 
RegisterChildNodes
 中才能添加完整的命名空间。之后你必须改变 
Getter
-方法:

例如,您可以将

TXMLKopfdatenType_reh.AfterConstruction

 更改为 

RegisterChildNode('Erstellungsdatum_Uhrzeit', TErstellungsdatum_UhrzeitTyp_kod)


RegisterChildNode('Erstellungsdatum_Uhrzeit', TErstellungsdatum_UhrzeitTyp_kod, 'http://www.vdek.com/xml-schema/KOD/1.2');


以及来自

的 Getter 方法

TXMLKopfdatenType_reh.Get_Erstellungsdatum_Uhrzeit

Result := ChildNodes['Erstellungsdatum_Uhrzeit'] as IErstellungsdatum_UhrzeitTyp_kod;


Result := ChildNodes['kod:Erstellungsdatum_Uhrzeit'] as IErstellungsdatum_UhrzeitTyp_kod;


通过这种方法,您可以利用 XML 向导的优点并纠正其错误

更新2024-07-21

要正确使用命名空间,您还需要手动声明命名空间并进一步增强生成的

Getter

。在您的情况下,您需要在三个函数中添加以下行,这些函数在初始化 
GetXXX
 后创建根对象(
LoadXXX
NewXXX
Result
):

Result.DeclareNamespace('reh', 'http://www.vdek.com/xml-schema/REH/1.8'); Result.DeclareNamespace('kod', 'http://www.vdek.com/xml-schema/KOD/1.2'); Result.DeclareNamespace('bew', 'http://www.vdek.com/xml-schema/BEW/1.5'); Result.DeclareNamespace('bty', 'http://www.vdek.com/xml-schema/BTY/1.2');
由于(例如)

ChildNodes['kod:Erstellungsdatum_Uhrzeit']

也无法与命名空间正常工作,因此您需要使用函数
FindNode
。您可以增强
Getter
喜欢

Result := ChildNodes.FindNode('Erstellungsdatum_Uhrzeit', 'http://www.vdek.com/xml-schema/KOD/1.2') as IErstellungsdatum_UhrzeitTyp_kod; if not Assigned(Result) then Result := ChildNodes['kod:Erstellungsdatum_Uhrzeit'] as IErstellungsdatum_UhrzeitTyp_kod;
这将检查 

Node

 是否存在于指定的命名空间中。如果它不存在,我们将回退到旧的逻辑,这将默认创建节点。

© www.soinside.com 2019 - 2024. All rights reserved.