7. März 2019 10:07
Ich habe einen SOAP-Webservice in NAV 2016 erstellt, mit dem eine Methode aufgerufen werden kann, der einen Parameter als BigText-Variable enthält. Über diesen Parameter kann eine XML-Struktur übergeben werden. Das Problem tritt auf, wenn ein XML-Element als Wert einen String mit Umlauten enthält, wie folgendes Beispiel zeigt:
Variablen:
- Code:
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:
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:
<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.
Zuletzt geändert von niehaves am 8. März 2019 17:23, insgesamt 1-mal geändert.