2015-04-08 18 views
7

questo è un file xml che avevo ricevuto e voglio generare lo stesso output con delphi. Ho usato il wizard delphi xml per generare una grande unità dal mio schema.IXMLNode set prefisso e spazio dei nomi

Quindi questo è l'uscita voglio avere (file originale)

<?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> 

Il mio codice 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; 

mio output generato con il mio codice 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> 

Così come posso impostare i prefissi/spazi dei nomi come reh :,: kod ... nel file xm ym come nel file xml originale?

Come si vede, non uso il comando ".addchild", quindi ho bisogno di una risposta diversa.

+0

possibile duplicato di [Come impostare il prefisso di un elemento del documento in Delphi] (http://stackoverflow.com/questions/3119314/ how-to-set-the-prefix-of-a-document-element-in-delphi) –

+0

Il suo sorriso sì, ma come potete vedere non lavoro con "AddChild" quindi la soluzione non ha senso per me. Ecco perché ho chiesto – Hidden

+0

Che ne dici di usare XSLT per eseguire questa trasformazione? Puoi applicare i fogli di stile XSLT in Delphi? –

risposta

1

Questo è un antico bug Delphi e un problema chiunque voglia utilizzare Delphi per la programmazione di fascia alta in un ambiente moderno. La procedura guidata di associazione XML tende ad arrestarsi in modo anomalo se incontra elementi come @include, quindi se si dispone di spazi dei nomi nidificati (o dipendenze esterne, come la maggior parte degli schemi in questi giorni) si è sfortunati. L'aggiunta di uno spazio dei nomi tuttavia non è possibile. In circostanze normali non è necessario in quanto il parser XML risolverà i nomi, ma se si ha lo stesso identificatore utilizzato da due file, allora si scontrerà e renderà l'XML inutilizzabile. Dovresti inoltrare una richiesta a EMB e fargli fare il fix, come ho fatto in 2 occasioni - forse si sveglieranno e faranno qualcosa questa volta.

+0

Sì, è schizzinoso sui file XSD, ma è certamente possibile ... – whosrdaddy

+0

Se accetti la mia risposta, per favore rispondi o rispondi.Non ci sono aggiornamenti per questo problema, spero sinceramente che Embarcadero risolva questo problema, ma per ora è ancora lì –

3

Se si dispone di uno schema XSD complesso, costituito da più file, la procedura guidata di associazione dati XML non riesce a creare il codice corretto (come si è notato). In tal caso, è più semplice alimentare l'output desiderato a un convertitore XML-XSD online e utilizzarlo come input per la procedura guidata di associazione. ho predisposto un nuovo file XSD (generato dal file XML hai postato qui), utilizzando l'eccellente XMLgrid converter

<?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> 

Se si importa questo file XSD nella procedura guidata di associazione XML, genererà un'unità che può produrre la corretto XML per te.

+0

Puoi trovare il file generato da XE7 [qui] (http://pastebin.com/bcNYzUwX) – whosrdaddy

+0

Come vedi qui: lato sinistro = originale ||||||||| lato destro = nuovo file generato. Gli spazi dei nomi sono ancora mancanti: -/è solo possibile impostare uno spazio dei nomi per l'intera parte "Kopfdaten" per esempio. https://i.imgur.com/trWqUPU.png – Hidden

2

solo una soluzione veloce, è possibile rendere più bella

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; 
+0

Qual è la differenza tra IXMLDOMNode e IXMLNode? Nel mio codice attuale ho usato solo IXMLNode – Hidden

+1

mentre funzionava, manca l'intero punto e sta ottenendo la procedura guidata di associazione dati XML per produrre l'output corretto ... – whosrdaddy

+1

@Hidden 'IXMLNode' è un'interfaccia nodo da delphi' xml' unità. E 'IXMLDOMNode' è un'interfaccia nodo dalla libreria' msxml' di Microsoft. –