AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Problemen beim XML-Datenbindung mit NameSapce(Namenräume)
Thema durchsuchen
Ansicht
Themen-Optionen

Problemen beim XML-Datenbindung mit NameSapce(Namenräume)

Ein Thema von khalilazz · begonnen am 19. Apr 2007 · letzter Beitrag vom 19. Apr 2007
Antwort Antwort
khalilazz
(Gast)

n/a Beiträge
 
#1

Problemen beim XML-Datenbindung mit NameSapce(Namenräume)

  Alt 19. Apr 2007, 12:41
Hallo
Ich habe eine Codegenierierung für diese XML-Datei erstellt:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<bestellung xmlns:produkt="http://localhost/XML/produkt" xmlns:kunde="http://localhost/XML/kunde">
 <produkt:nummer>p49393</produkt:nummer>
 <produkt:name>JXY Rasierer VC100</produkt:name>
 <produkt:menge>1</produkt:menge>
 <produkt:preis>69,--</produkt:preis>
 <kunde:nummer>k2029</kunde:nummer>
 <kunde:name>Meier, Fritz</kunde:name>
 <kunde:lieferadresse>Donnerbalkenstr.14, 80111 München</kunde:lieferadresse>
</bestellung>
So sieht die erstellte generierte Quellcode:
Code:
{*******************************************************************************************************************}
{                                                                                                                   }
{                                                 XML-Datenbindung                                                 }
{                                                                                                                   }
{                                                                                                                   }
{*******************************************************************************************************************}

unit bestellung;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward-Deklarationen }

  IXMLBestellungType = interface;
  IXMLString_List = interface;

{ IXMLBestellungType }

  IXMLBestellungType = interface(IXMLNode)
    ['{C22F408D-DD5E-4DFA-93C9-40DE9C33353D}']
    { Eigenschaftszugriff }
    function Get_Nummer: IXMLString_List;
    function Get_Name: IXMLString_List;
    function Get_Menge: Integer;
    function Get_Preis: WideString;
    function Get_Lieferadresse: WideString;
    procedure Set_Menge(Value: Integer);
    procedure Set_Preis(Value: WideString);
    procedure Set_Lieferadresse(Value: WideString);
    { Methoden & Eigenschaften }
    property Nummer: IXMLString_List read Get_Nummer;
    property Name: IXMLString_List read Get_Name;
    property Menge: Integer read Get_Menge write Set_Menge;
    property Preis: WideString read Get_Preis write Set_Preis;
    property Lieferadresse: WideString read Get_Lieferadresse write Set_Lieferadresse;
  end;

{ IXMLString_List }

  IXMLString_List = interface(IXMLNodeCollection)
    ['{D1C92B35-3E8B-4F24-8C39-5D79E6109B00}']
    { Methoden & Eigenschaften }
    function Add(const Value: WideString): IXMLNode;
    function Insert(const Index: Integer; const Value: WideString): IXMLNode;
    function Get_Item(Index: Integer): WideString;
    property Items[Index: Integer]: WideString read Get_Item; default;
  end;

{ Forward-Deklarationen }

  TXMLBestellungType = class;
  TXMLString_List = class;

{ TXMLBestellungType }

  TXMLBestellungType = class(TXMLNode, IXMLBestellungType)
  private
    FNummer: IXMLString_List;
    FName: IXMLString_List;
  protected
    { IXMLBestellungType }
    function Get_Nummer: IXMLString_List;
    function Get_Name: IXMLString_List;
    function Get_Menge: Integer;
    function Get_Preis: WideString;
    function Get_Lieferadresse: WideString;
    procedure Set_Menge(Value: Integer);
    procedure Set_Preis(Value: WideString);
    procedure Set_Lieferadresse(Value: WideString);
  public
    procedure AfterConstruction; override;
  end;

{ TXMLString_List }

  TXMLString_List = class(TXMLNodeCollection, IXMLString_List)
  protected
    { IXMLString_List }
    function Add(const Value: WideString): IXMLNode;
    function Insert(const Index: Integer; const Value: WideString): IXMLNode;
    function Get_Item(Index: Integer): WideString;
  end;

{ Globale Funktionen }

function Getbestellung(Doc: IXMLDocument): IXMLBestellungType;
function Loadbestellung(const FileName: WideString): IXMLBestellungType;
function Newbestellung: IXMLBestellungType;

const
  TargetNamespace = '';

implementation

{ Globale Funktionen }

function Getbestellung(Doc: IXMLDocument): IXMLBestellungType;
begin
  Result := Doc.GetDocBinding('bestellung', TXMLBestellungType, TargetNamespace) as IXMLBestellungType;
end;

function Loadbestellung(const FileName: WideString): IXMLBestellungType;
begin
  Result := LoadXMLDocument(FileName).GetDocBinding('bestellung', TXMLBestellungType, TargetNamespace) as IXMLBestellungType;
end;

function Newbestellung: IXMLBestellungType;
begin
  Result := NewXMLDocument.GetDocBinding('bestellung', TXMLBestellungType, TargetNamespace) as IXMLBestellungType;
end;

{ TXMLBestellungType }

procedure TXMLBestellungType.AfterConstruction;
begin
  FNummer := CreateCollection(TXMLString_List, IXMLNode, 'nummer') as IXMLString_List;
  FName := CreateCollection(TXMLString_List, IXMLNode, 'name') as IXMLString_List;
  inherited;
end;

function TXMLBestellungType.Get_Nummer: IXMLString_List;
begin
  Result := FNummer;
end;

function TXMLBestellungType.Get_Name: IXMLString_List;
begin
  Result := FName;
end;

function TXMLBestellungType.Get_Menge: Integer;
begin
  Result := ChildNodes['menge'].NodeValue;
end;

procedure TXMLBestellungType.Set_Menge(Value: Integer);
begin
  ChildNodes['menge'].NodeValue := Value;
end;

function TXMLBestellungType.Get_Preis: WideString;
begin
  Result := ChildNodes['preis'].Text;
end;

procedure TXMLBestellungType.Set_Preis(Value: WideString);
begin
  ChildNodes['preis'].NodeValue := Value;
end;

function TXMLBestellungType.Get_Lieferadresse: WideString;
begin
  Result := ChildNodes['lieferadresse'].Text;
end;

procedure TXMLBestellungType.Set_Lieferadresse(Value: WideString);
begin
  ChildNodes['lieferadresse'].NodeValue := Value;
end;

{ TXMLString_List }

function TXMLString_List.Add(const Value: WideString): IXMLNode;
begin
  Result := AddItem(-1);
  Result.NodeValue := Value;
end;

function TXMLString_List.Insert(const Index: Integer; const Value: WideString): IXMLNode;
begin
  Result := AddItem(Index);
  Result.NodeValue := Value;
end;
function TXMLString_List.Get_Item(Index: Integer): WideString;
begin
  Result := List[Index].NodeValue;
end;

end.
um einen knoten zu erstellen bin folgendes gegangen

Code:
var
 XDoc:TXMLDocumten;
 Bestellung:IXMLBestellungtype;

begin
XDoc.active:=true;
Bestellung:=GetBestellung(XDoc);
Bestellung.Nummer.add('Produkt1');
Bestellung.SaveToFile('NeueDatei.xml');
end;
Eine Knote 'Nummer'wird erstellt aber ohne namenraum oder namespace.
wie kannn ich eihen knoten erstellen,die einen bestimmten Namenspace enthalten in meinem Beispiel
(produkt oder kunde)

Danke für Ihre Hilfe
  Mit Zitat antworten Zitat
khalilazz
(Gast)

n/a Beiträge
 
#2

Re: Problemen beim XML-Datenbindung mit NameSapce(Namenräume

  Alt 19. Apr 2007, 16:51
Es ist schade dass ich bis jetzt keínen antwort erhalten habe,
ich habe nicht gewusst dass meine frage so kompliziert war?
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:06 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