[DotNet] Auslesen von XML Dokument mit CU 6224

13. Dezember 2017 12:45

Hallo liebe Community,

Zu aller erst, nein XML Port kommt nicht in Frage, es kann auch leere Nodes geben und auch Nodes mit mehreren Attributen (Neuling mit XML + NAV sry dafür :roll: )
Zweiter Punkt, nein ich möchte keine Automation verwenden, weil sich das alles sehr schnell von Version zu Version verändern kann.
Ich habe nach sehr langem googlen noch nicht das gewünschte Ergebnis erreicht und muss nun deswegen mal nachfragen, vielleicht hat ja der ein oder andere eine "Lösung" parat.

Meine XML Datei (Beispiel)

Code:
<Speisekarte total_count="2" type="array">
   <Gericht>
      <nr>1</nr>
      <projekt nr="2" name="Gourmet"/>
      <name>Wildschwein in Trüffelsosse</name>
   </Gericht>
   <Gericht>
      <nr>4</nr>
      <name>Wiener Schnitzel</name>
   </Gericht>
</Speisekarte>


Noch dazu gesagt, die Datei hole ich mir über einen InStream aus TempBlob, da wir das ganze per HttpRequest machen.
Also ich habe nix lokal!


Beispielcode:

Code:
IssueCategoryXML := 'www.httprequest.com/=' + Setup."Api Key";
HttpRequestImport(ResponseBodyBlob);

ResponseBodyBlob.Blob.CREATEINSTREAM(InStream);

XMLDOMMgt.LoadXMLNodeFromInStream(InStream,XmlRootNode);
XMLDOMMgt.LoadXMLNodeFromInStream(InStream,ChildXMLNote);
XMLDOMMgt.FindNodes(XmlRootNode,'//Speisekarte/Gericht,NodeList);
XMLDOMMgt.FindNodes(ChildXMLNote,'//Gericht/nr',PieceNodeList);

...

FOR I := 0 TO (NodeList.Count-1) DO
  BEGIN
    NewXMLNode := NodeList.Item(I);
    MESSAGE(NodeList.Item(I).InnerText);
    issuecategorycount := (issuecategorycount + COPYSTR(NodeList.Item(I).InnerText,2));
    issuecategorycount := issuecategorycount + ' ';
END;


Soweit ist das ja auch ok, damit habe ich die ersten Nodes, aber dann geht es zur projekt id und schon kommt mein Problem.
Folgendes:

Ich möchte ein XML Dokument auslesen mit den Funktionen in der Codeunit 6224.

Nun habe ich aber "projekt nr" und name in einem Node. Außerdem ist projekt nr mit Leerzeichen.
An die anderen Nodes komme ich mit der Funktion FindNodes bzw FindNode ran, aber an projekt nr nicht.

Mit der Funktion FindNodesWithNamespace klappt das auch nicht so ganz.... ich bin auch noch nicht wirklich hinter das deklarieren von Namespaces gekommen... (wie z.B. hier gezeigt wird: https://msdn.microsoft.com/en-us/library/ms950779.aspx)

Im ganzen möchte ich eigentlich über die Codeunit XML Files generieren können und bereits bestehende XML Files auslesen können.

Die Namespace Sache macht mich schon ein bisschen traurig... :-?

Ich hoffe ich konnte das gut genug erklären.

Danke schonmal im Voraus! :-D

Gruß

Phillip