Variablen:
- Code: Alles auswählen
TempBlob Record TempBlob (Tabelle zur temporären Nutzung mit Primary Key und einem Blob-Feld)
writeStream OutStream
readStream InStream
XMLDOM DotNet System.Xml.XmlDocument...
C/AL-Code der Funktion "ImportXML (XMLFile : BigText) : Text[250]" (ist in einer Codeunit enthalten und wird per Webservice aufgerufen):
- Code: Alles auswählen
IF ISNULL(XMLDOM) THEN
XMLDOM := XMLDOM.XmlDocument();
TempBlob.Blob.CREATEOUTSTREAM(writeStream);
XMLFile.WRITE(writeStream);
TempBlob.INSERT;
TempBlob.CALCFIELDS(TempBlob.Blob);
TempBlob.Blob.CREATEINSTREAM(readStream);
XMLDOM.Load(readStream);
Die XML-Struktur, die per Parameter "XMLFile" in obiger Funktion ĂĽbergeben wird, sieht (gekĂĽrzt) so aus:
- Code: Alles auswählen
<Bestellung>
<Kreditor>12345</Kreditor>
<Nr.>789</Nr.>
<Name>MĂĽller</Name>
</Bestellung>
Wenn ich jetzt die XML-Struktur in einen SOAP-Envelope einbette und per SoapUI an den NAV-Webservice sende, erhalte ich als Response folgende Fehlermeldung:
Fehler bei einem Aufruf von System.Xml.XmlDocument.Load mit folgender Meldung: UngĂĽltiges Zeichen in der angegebenen Codierung. Zeile 4, Position 10.
Wenn ich der XML-Struktur folgende Zeile mit einer Zeichenkodierung voranstelle, erhalte ich die Fehlermeldung nicht:
<?xml version="1.0" encoding="ISO-8859-1"?>
Das Problem ist, dass ich nicht bestimmen kann, dass die Zeile in der XML-Struktur enthalten ist, da sie von "dritter Seite" geliefert wird und sie standardmäßig nicht enthalten ist.
Meine Frage ist nun, wie ich das Problem in Navision abfangen kann. Kann ich eventuell herausfinden, welche Zeichenkodierung Navision verwendet, damit ich die oben dargestellt Zeile mit der entsprechenden Zeichenkodierung selbst einfĂĽgen kann? Ich bin ĂĽber jeden Hinweis dankbar.