IXMLNode设置前缀和命名空间

时间:2015-04-08 06:50:16

标签: xml delphi xsd xml-parsing

这是我收到的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文件中设置像reh:,:kod ...这样的前缀/命名空间,就像在原始的xml文件中一样?

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

4 个答案:

答案 0 :(得分:3)

如果您有一个复杂的XSD架构,由多个文件组成,XML数据绑定向导无法创建正确的代码(就像您已经注意到的那样)。在这种情况下,更容易将所需输出提供给在线XML到XSD转换器,并将其用作数据绑定向导的输入。 我使用优秀的XMLgrid converter

制作了一个新的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的单元。

答案 1 :(得分: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;

答案 2 :(得分:1)

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

答案 3 :(得分:0)

通过数据绑定向导进行导入后,您可以对生成的文件进行后处理。您必须将第三个参数添加到 RegisterChildNode 方法并将第四个参数添加到 RegisterChildNodes 以添加完整的命名空间。之后,您必须更改 Getter-methods:

例如,您可以更改 TXMLKopfdatenType_reh.AfterConstruction from

RegisterChildNode('Erstellungsdatum_Uhrzeit', TErstellungsdatum_UhrzeitTyp_kod)

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

以及来自

的 Getter-Method TXMLKopfdatenType_reh.Get_Erstellungsdatum_Uhrzeit

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

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

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

相关问题