[Gelöst] XMLPort und Schema

25. Januar 2012 10:53

Hallo zusammen,

ich versuche aus dem Nav heraus mittels eines XMLPorts eine XML-Datei zu erzeugen, die ein Schema beinhaltet.
Laut dem Artikel How to use XMLports to connect to web services in MBS Navison 4.0 in der PartnerSource
sollte dies auf folgende Art möglich sein:
1. Sending XML documents

In the XMLport, the TagType “Attribute” can be used to define XML namespaces.

For example, add the following tag in an XMLport:

TagName: xmlns
TagType: Attribute
SourceType: Text
DataSource: xmlns1

Add the following C/AL code line in the OnPreXMLport() trigger of the XMLport:

xmlns1 := 'http://schemas.xmlsoap.org/soap/envelope/';

Leider funktioniert es nicht, das Attribut Tag ist immer leer. Wer kann helfen? Danke!
Zuletzt geändert von iris2009 am 27. Januar 2012 11:06, insgesamt 1-mal geändert.

Re: XMLPort und Schema

25. Januar 2012 20:12

iris2009 hat geschrieben:... MBS Navison 4.0...

Bist Du sicher im Forum für NAV 2009 richtig zu sein (NAV 2009 = Version 6.x)?

VG,
Anke

Re: XMLPort und Schema

25. Januar 2012 20:47

Anke S. hat geschrieben:
iris2009 hat geschrieben:... MBS Navison 4.0...

Bist Du sicher im Forum für NAV 2009 richtig zu sein (NAV 2009 = Version 6.x)?
Ich bin mir sicher, dass sich Iris sicher ist :P
In dem Bereich hat nichts groß geändert, so dass dieser Artikel weiterhin Bestand hat.

Ich verstehe allerdings nicht, was da schief läuft, da das eigentlich so funktionieren sollte. Iris, kannst du bitte mal den XMLport als Textobjekt hier posten?

Re: XMLPort und Schema

26. Januar 2012 10:17

Hallo SilverX und Anke,

der XMLPort:
Code:
OBJECT XMLport 50001 DoubleWeighingXmlTest
{
  OBJECT-PROPERTIES
  {
    Date=26.01.12;
    Time=09:14:04;
    Modified=Yes;
    Version List=;
  }
  PROPERTIES
  {
    Direction=Export;
    Encoding=UTF-8;
    DefaultNamespace=xsi:="http://www.w3.org/2001/XMLSchema-instance";
    InlineSchema=Yes;
    UseDefaultNamespace=Yes;
    OnPreXMLport=BEGIN
                   xmlns1 := 'http://www.w3.org/2001/XMLSchmea-instance';
                   xsi1 := 'Schema\ExportAuftraege.xsd';
                 END;

  }
  ELEMENTS
  {
    { [{DFDF7F15-4641-450A-A111-C549F110D32D}];  ;ExportAuftraege     ;Element ;Text    ;
                                                  VariableName=<ExportAuftraege> }

    { [{64ADCFDB-A51E-48DA-AA51-101DFFFA0747}];1 ;xmlns               ;Attribute;Text   ;
                                                  VariableName=<xmlns1> }

    { [{B9205BA3-D896-4CE6-8882-1279B08C6BAF}];1 ;xsi                 ;Attribute;Text   ;
                                                  VariableName=<xsi1> }

    { [{C012F4E9-A63E-484B-B989-BFA87A5A4624}];1 ;Double_Weighing     ;Element ;Table   ;
                                                  SourceTable=Table50007 }

    { [{5AE678A3-759A-4A20-97EA-97E1421E7442}];2 ;DocumentNo          ;Element ;Field   ;
                                                  DataType=Code;
                                                  SourceField=Rhewa_SingleWeighing::Document No. }

    { [{570D5F6D-E74A-4E28-B7BF-4BB53CD20611}];2 ;Barcode             ;Element ;Field   ;
                                                  DataType=Integer;
                                                  SourceField=Rhewa_SingleWeighing::Barcode }

  }
  EVENTS
  {
  }
  REQUESTPAGE
  {
    PROPERTIES
    {
    }
    CONTROLS
    {
    }
  }
  CODE
  {
    VAR
      xmlns1@1110300000 : Text[100];
      xsi1@1110300001 : Text[100];

    BEGIN
    END.
  }
}
Zuletzt geändert von McClane am 26. Januar 2012 10:22, insgesamt 2-mal geändert.
Grund: Der Beitrag ist besser lesbar, wenn Code von Code-Tags eingefasst wird. So kann man den Code auch leichter kopieren.

Re: XMLPort und Schema

26. Januar 2012 20:02

Hallo Iris,

so wie es aussieht hast du in der Struktur als Data Source für xmlns und xsi, falsche Variablennamen angegeben. Durch die spitzen Klammern erreichst du genau diesen Variablennamen. Die Variablen heißen also <xmlns1> und <xsi1>, nicht xmlns1 und xsi1.
Stattdessen hast du zwei globale Variablen definiert, denen du die Werte zuweist. Diese werden allerdings nicht ausgegeben.

Zur Korrektur:
  • Ändere die Data Source für die Attribute auf xmlns1 und xsi1 (ohne spitze Klammern)
  • Lösche die zwei globalen Variablen xmlns1 und xsi1
  • Speichern und testen :)

Re: XMLPort und Schema

27. Januar 2012 11:03

Danke SilverX, so funktioniert es!