Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Prism TXMLDocument: "xsi" vom xsi:noNamespaceSchemaLocation fehlt (https://www.delphipraxis.net/108507-txmldocument-xsi-vom-xsi-nonamespaceschemalocation-fehlt.html)

Gnorks 15. Feb 2008 01:38


TXMLDocument: "xsi" vom xsi:noNamespaceSchemaLocat
 
Moin moin,

bitte helft mir doch bei meinem Problem.

Situation:
Ein Codeschnippsel von mir speichert Daten als XML, ein validiertes Schema hab ich auch erstellt.

Delphi-Quellcode:
...
var xmldoc : TXMLDocument;
begin
  xmldoc := TXMLDocument.Create(nil);
  xmldoc.Active:=True;
  xmldoc.Encoding:='ISO-8859-1';
  xmldoc.Options := [doNodeAutoCreate, doNodeAutoIndent, doAttrNull];
  xmldoc.ParseOptions := [poResolveExternals, poValidateOnParse];
  root_node := xmldoc.AddChild('blablubb');
  xmldoc.DocumentElement.Attributes['xmlns:xsi'] := 'http://www.w3.org/2001/XMLSchema-instance';
  xmldoc.DocumentElement.Attributes['xsi:noNamespaceSchemaLocation'] := 'http://www.blablubb.com/blablubb/schema.xsd';
  ...
  ...
  xmldoc.SaveToFile(file_name_str);
  ...
end;
Problem:
Eigentlich ist alles prima, die XML-Datei wird wie gewünscht geschrieben, allerdings hat die Codezeile
Delphi-Quellcode:
  xmldoc.DocumentElement.Attributes['xsi:noNamespaceSchemaLocation'] := 'http://www.blablubb.com/blablubb/schema.xsd';
nicht die erwartete Wirkung. In der XML-Datei steht folgendes:
XML-Code:
<blablubb xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="http://www.blablubb.com/blablubb/schema.xsd">
Hier fehlt mir eindeutig das "xsi:" vor dem "noNamespaceSchemaLocation".

Ich möchte darauf wetten, daß dieses Problem Euch bekannt ist. Leider konnte mir google nicht weiterhelfen.
Bitte helft mir doch auf die Sprünge, ich stehe kurz davor, das "xsi" klassisch per file i/o einzufügen. :|

Viele Grüße,
Gnorks

marabu 15. Feb 2008 06:32

Re: TXMLDocument: "xsi" vom xsi:noNamespaceSchemaL
 
Herzlich willkommen in der Delphi-PRAXiS, Gnorks.

Dein Problem sieht gar nicht nach .NET aus - unter Win32 machst du alles richtig und bei mir (D7) wird der NameSpace-Präfix auch erzeugt.

Freundliche Grüße

Gnorks 15. Feb 2008 12:45

Re: TXMLDocument: "xsi" vom xsi:noNamespaceSchemaL
 
Danke für die Willkommensgrüße und Deine Mühe, Marabu.

Na, dann bleibt mir wohl vorerst nichts anderes übrig, als das "xsi"
in die TStrings der TXMLDocument.XML reinzuhacken. Dreckig, aber schnell. :-D

Danke,
Gnorks

marabu 15. Feb 2008 13:04

Re: TXMLDocument: "xsi" vom xsi:noNamespaceSchemaL
 
Willst du dich wirklich zu sowas herablassen?

Welchen XML-Parser hast du denn konfiguriert und welche Delphi-Version verwendest du? Ich habe mit MSXML4 getestet.

Gnorks 15. Feb 2008 14:48

Re: TXMLDocument: "xsi" vom xsi:noNamespaceSchemaL
 
Naja. Von "wollen" kann nicht die Rede sein.
Das ist ersteinmal auf die TODO-Liste gewandert, ich bin einfach
begierig darauf, schonmal weiterzuarbeiten. Schöner wäre es natürlich
ohne dirty tricks.

Delphi Version: CodeGear™ Delphi® 2007 for Microsoft® .NET Version 11.0.2902.10471

DOMVendor: CLRXML

OS: Vista64

Mir fehlt leider die Delphi-Erfahrung, um mich dem Problem tiefergehend zu nähern.
Sollte Dir Marabu (oder einem anderern User) etwas dazu einfallen, wäre ich also
höchst dankbar!

Gruß,
Gnorks


Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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