|
Antwort |
Registriert seit: 25. Okt 2002 176 Beiträge Delphi 6 Professional |
#1
hallo erstmal,
ich muss eine XML Datei einlesen in der viele XSD Tags stehen, ich weiss jetzt nicht ganz genau was das ist, ein Kollege meinte das sind Stylesheet Verknüpfungen... Hier mal die XML Datei
XML-Code:
Ich wollte jetzt nur mal an die Struuktur der Daten kommen die unter dem Knoten ZMA01K steht. Das ganze habe ich so gemacht:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0"> <xsd:element name="ZMA01"> <xsd:annotation> <xsd:documentation>Materialstamm - DFÜ Lieferant</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="IDOC"> <xsd:complexType> <xsd:sequence> <xsd:element name="EDI_DC40"> <xsd:annotation> <xsd:documentation>IDoc-Kontrollsatz für Schnittstelle zu einem externen System</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="TABNAM" type="xsd:string" fixed="EDI_DC40"> <xsd:annotation> <xsd:documentation>Name der Tabellenstruktur</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="MANDT" minOccurs="0"> <xsd:annotation> <xsd:documentation>Mandant</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="DOCNUM" minOccurs="0"> <xsd:annotation> <xsd:documentation>Nummer des IDocs</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="16"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="DOCREL" minOccurs="0"> <xsd:annotation> <xsd:documentation>SAP-Release des IDocs</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="4"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="STATUS" minOccurs="0"> <xsd:annotation> <xsd:documentation>Status des IDocs</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="DIRECT"> <xsd:annotation> <xsd:documentation>Richtung</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1"> <xsd:annotation> <xsd:documentation>Ausgang</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="2"> <xsd:annotation> <xsd:documentation>Eingang</xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="OUTMOD" minOccurs="0"> <xsd:annotation> <xsd:documentation>Ausgabemodus</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="EXPRSS" minOccurs="0"> <xsd:annotation> <xsd:documentation>Übersteuerung im Eingang</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="TEST" minOccurs="0"> <xsd:annotation> <xsd:documentation>Testkennzeichen</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="IDOCTYP" type="xsd:string" fixed="ZMA01"> <xsd:annotation> <xsd:documentation>Name des Basistyps</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="CIMTYP" minOccurs="0" type="xsd:string" fixed=""> <xsd:annotation> <xsd:documentation>Erweiterung (vom Kunden definiert)</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="MESTYP" minOccurs="0"> <xsd:annotation> <xsd:documentation>Nachrichtentyp</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="30"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MESCOD" minOccurs="0"> <xsd:annotation> <xsd:documentation>Nachrichtenvariante</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MESFCT" minOccurs="0"> <xsd:annotation> <xsd:documentation>Nachrichtenfunktion</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="STD" minOccurs="0"> <xsd:annotation> <xsd:documentation>EDI-Standard, Kennzeichen</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="STDVRS" minOccurs="0"> <xsd:annotation> <xsd:documentation>EDI-Standard, Version und Release</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="6"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="STDMES" minOccurs="0"> <xsd:annotation> <xsd:documentation>EDI-Nachrichtentyp</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="6"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SNDPOR"> <xsd:annotation> <xsd:documentation>Absenderport (SAP-System, externes Subsystem)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SNDPRT"> <xsd:annotation> <xsd:documentation>Partnerart des Absenders</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SNDPFC" minOccurs="0"> <xsd:annotation> <xsd:documentation>Partnerrolle des Absenders</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SNDPRN"> <xsd:annotation> <xsd:documentation>Partnernummer des Absenders</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SNDSAD" minOccurs="0"> <xsd:annotation> <xsd:documentation>Absenderadresse (SADR)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="21"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SNDLAD" minOccurs="0"> <xsd:annotation> <xsd:documentation>Logische Adresse des Absenders</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="70"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="RCVPOR"> <xsd:annotation> <xsd:documentation>Empfängerport</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="RCVPRT" minOccurs="0"> <xsd:annotation> <xsd:documentation>Partnerart des Empfängers</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="RCVPFC" minOccurs="0"> <xsd:annotation> <xsd:documentation>Partnerrolle des Empfängers</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="RCVPRN"> <xsd:annotation> <xsd:documentation>Partnernummer des Empfängers</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="RCVSAD" minOccurs="0"> <xsd:annotation> <xsd:documentation>Empfängeradresse (SADR)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="21"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="RCVLAD" minOccurs="0"> <xsd:annotation> <xsd:documentation>Logische Adresse des Empfängers</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="70"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="CREDAT" minOccurs="0"> <xsd:annotation> <xsd:documentation>Erstellungsdatum</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="8"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="CRETIM" minOccurs="0"> <xsd:annotation> <xsd:documentation>Erstellungsuhrzeit</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="6"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="REFINT" minOccurs="0"> <xsd:annotation> <xsd:documentation>Übertragungsdatei (EDI Interchange)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="14"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="REFGRP" minOccurs="0"> <xsd:annotation> <xsd:documentation>Nachrichtengruppe (EDI Message Group)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="14"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="REFMES" minOccurs="0"> <xsd:annotation> <xsd:documentation>Nachricht (EDI Message)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="14"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="ARCKEY" minOccurs="0"> <xsd:annotation> <xsd:documentation>Schlüssel des externen Nachrichtenarchivs</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="70"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="SERIAL" minOccurs="0"> <xsd:annotation> <xsd:documentation>Serialisierung</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> <xsd:attribute name="SEGMENT" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="ZMA01K" minOccurs="0"> <xsd:annotation> <xsd:documentation>Materialstamm - DFÜ Lieferant (Kopf)</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="LIFNR" minOccurs="0"> <xsd:annotation> <xsd:documentation>Kontonummer des Lieferanten</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MATNR" minOccurs="0"> <xsd:annotation> <xsd:documentation>Materialnummer</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="18"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="REVLV" minOccurs="0"> <xsd:annotation> <xsd:documentation>Revisionsstand</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MAKT1" minOccurs="0"> <xsd:annotation> <xsd:documentation>Materialkurztext</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MAKT2" minOccurs="0"> <xsd:annotation> <xsd:documentation>Materialkurztext</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="40"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MEINS" minOccurs="0"> <xsd:annotation> <xsd:documentation>Basismengeneinheit</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="3"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="WRKST" minOccurs="0"> <xsd:annotation> <xsd:documentation>Werkstoff</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="48"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MTART" minOccurs="0"> <xsd:annotation> <xsd:documentation>Materialart</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="4"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="LAEDA" minOccurs="0"> <xsd:annotation> <xsd:documentation>Datum der letzten Änderung</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="8"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="ZEINR" minOccurs="0"> <xsd:annotation> <xsd:documentation>Dokumentnummer (ohne Dokumentenverwaltungssystem)</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="22"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> <xsd:attribute name="SEGMENT" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="BEGIN" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
Delphi-Quellcode:
Aber delphi gibt mir die Fehlermeldung das der Knoten ZMA01K nicht gefunden wurde.
...
Var Materialdatei: IXMLDocument; RootNode, DatenNode: IXMLNode; begin ... Materialdatei := TXMLDocument.Create(ausDatei); Materialdatei.Options := [doNodeAutoIndent]; Materialdatei.Active := True; RootNode := Materialdatei.ChildNodes.Nodes['ZMA01K']; IF RootNode.HasChildNodes then begin // Den Text "Materialstamm - DFÜ Lieferant (Kopf)" ausgeben laut Dokument Memo1.Lines.Add(RootNode.NodeValue); for ndxEintrag := 0 to RootNode.ChildNodes.Count - 1 do begin // Die einzelnen Daten ausgeben (hab ich noch nciht) end; end; ... Wie mach ich es denn am besten das ich erst die Struktur auslese und dann die Daten anhand der Struktur (am liebsten mit Delphi Boardmitteln) //edit So wies aussieht ist das ganze xsd gewurschtel nur die definition der späteren xml datei die ich gegen dieses schema gegenzeichnen kann zur validierung. also müsste ich das ganze gar nicht importieren, aber es ist mir irgendwie von nutzen weil ihc hier in der DP gelesen habe das man diese Datei einlesen kann und dann hat man eine neue klasse die der xml datei entspricht oder so.
:: don't Panic ::
|
Zitat |
(Administrator)
Registriert seit: 13. Jul 2005 Ort: Stadthagen 1.893 Beiträge Delphi 12 Athens |
#2
Hallo!
Zuerst einmal eine Bitte: Könntest Du die Datei aus Deinem Post entfernen und anhängen? Ist ein bischen übersichtlicher. Das was Du da gepostest hast ist eine Schema-Definition auch als XSD-Datei bekannt. Aus dieser Datei kannst Du die von Delphi automatisch eine Unit zur Behandlung erstellen lassen. D.h. Du könntest.... wäre diese Datei nicht fehlerhaft .... Im Kopf der Datei ist eine UTF-8-Codierung angegeben. Das ist auch gut so. Aber leider ist diese UTF-8 Codierung dann nicht verwendet worden. In den documentation-Tags finden sich unter anderem Umlaute. Dies ist der ImportExperte von Delphi nicht gewillt anzunehmen. Wenn ich das richtig sehe, dann sind Umlaute nur in Documentation-Tags verwendet worden. Dort könntest Du sie von Hand in ae ue usw ändern, ohne dass Du das Schema verändern würdest. Dannach müßtest Du unter Datei Neu weitere XML-Datenbindung eine entsprechende Datenbindung anlegen können. Bei weiteren Fragen, einfach melden. Hope it helps (a little bit) onlinekater
Thomas Breitkreuz
|
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |