AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Validieren einer XML die 99.te

Ein Thema von creehawk · begonnen am 2. Nov 2018 · letzter Beitrag vom 3. Nov 2018
 
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
233 Beiträge
 
Delphi 10.4 Sydney
 
#1

Validieren einer XML die 99.te

  Alt 2. Nov 2018, 10:01
Moin Moin.

Zum Thema 'Validieren' habe ich in den Posts hier und in der Google Welt allerlei gefunden, aber nichts hilft mit weiter.

Die XML : (Aressenliste.xml)
Code:
<?xml version="1.0"?>
<Adressen xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance" xsi:schemaLocation="Adressenliste.xsd">
   <Adresse>
      <Index>Käsekuchen</Index>
      <Anrede>Frau</Anrede>
      <Titel>Dr.</Titel>
      <Vorname>Anneliese</Vorname>
      <Nachname>Rampelburger-Meschbach</Nachname>
      <Strasse>Knödelweg</Strasse>
      <Hausnummer>38</Hausnummer>
      <Postleitzahl>47120</Postleitzahl>
      <Ort>Kassebur-Segersheim</Ort>
      <Telefon>04985/83984938</Telefon>
      <Mobil>0175/3986582364</Mobil>
      <EMail>Anneliese@t-online.jo</EMail>
      <Geburtsdatum>12-12-12</Geburtsdatum>
      <Kommentar></Kommentar>
   </Adresse>
</Adressen>
Die XSD: (Adressenliste.xsd)
Code:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Adressen">
   <xs:complexType>
      <xs:sequence>
         <xs:element name="Adresse" maxOccurs="unbounded" minOccurs="0">
            <xs:complexType>
               <xs:sequence>
                  <xs:element type="xs:int" name="Index"/>
                  <xs:element type="xs:string" name="Anrede"/>
                  <xs:element type="xs:string" name="Titel"/>
                  <xs:element type="xs:string" name="Vorname"/>
                  <xs:element type="xs:string" name="Nachname"/>
                  <xs:element type="xs:string" name="Strasse"/>
                  <xs:element type="xs:integer" name="Hausnummer"/>
                  <xs:element type="xs:int" name="Postleitzahl"/>
                  <xs:element type="xs:string" name="Ort"/>
                  <xs:element type="xs:string" name="Telefon"/>
                  <xs:element type="xs:string" name="Mobil"/>
                  <xs:element type="xs:string" name="EMail"/>
                  <xs:element type="xs:date" name="Geburtsdatum"/>
                  <xs:element type="xs:string" name="Kommentar"/>
               </xs:sequence>
            </xs:complexType>
         </xs:element>
      </xs:sequence>
   </xs:complexType>
</xs:element>
</xs:schema>
Der Code zum validieren:
Code:
uses MSXML, Xml.XMLIntf, XML.XMLDoc, XML.XMLDOM;

function Validate_XML(xmlFile:String): Boolean;
var
  XMLDoc: IXMLDocument;
  T0,T1,T2,T3,T4:String;
begin
  XMLDoc := NewXMLDocument;
  XMLDoc.ParseOptions := [poResolveExternals, poValidateOnParse];
  Result := True;
    try
      XMLDoc.LoadFromFile(xmlFile) ;
      XMLDoc.Active := true;
    except
      on E: EDomParseError do
        begin
          If LastDelimiter('\',E.URL) = 0 then T0:= Copy(E.URL,LastDelimiter('/',E.URL)+1,50);
          If LastDelimiter('/',E.URL) = 0 then T0:= Copy(E.URL,LastDelimiter('\',E.URL)+1,50);
          T1:= 'Bei der Validierung der ' + T0 + ' wurde folgender Fehler festgestellt:' + #13 +#13;
          T2:= E.Reason + #13;                                               // Grund
          T3:= 'Fehler in Zeile : ' + IntToStr(E.Line) + #13;                // Zeile
          T4:= 'Text der Zeile : ' + Trim(E.SrcText) + #13 + #13;           // Zeilentext
          If E.ErrorCode <> -2146697210 then
          begin
          Application.MessageBox(Pchar(T1+T2+T3+T4),Pchar('Validierungsfehler'),16);
          end;
          Result:=False;
        end;
    end;
end;
Trotz des offensichtlichen Fehlers im Feld <Index> (Käsekuchen ist ja wohl kein 32er Integer) läuft die Validierung anstandslos durch.

Was ist da verkehrt? Gibts noch andere Möglichkeiten in Delphi?


creehawk

Delphi 10.2. Tokyo
Windows 10
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz