erstellen eines XML Imports

18. März 2008 16:14

ich versuche gerade ein XML zu importieren. (ohne XML Port, geht leider nicht).
die Einträge de ersten Ebene krieg ich auch noch gut hin. (hab mir dazu das Beispiel von Mibuso geladen

http://www.mibuso.com/dlinfo.asp?FileID=329

Aber darunter gibt es noch eine weitere Ebene, die ebenfalls eingelesen werden muß.

hat jemand ein Beispiel, wie sowas zu bewerkstelligen ist.

19. März 2008 04:48

mit XML-Port, aber warum geht der bei Dir nicht?

19. März 2008 08:23

Warum willst du denn einen XML-Import ohne XML-Port erstellen?
Per Port ist das eine leichte Sache, alles Andere ist Knochenarbeit :(

19. März 2008 09:05

ich habe beim Port das Problem, das ich die führenden Infos xmlns:xsi nicht gehandelt bekomme.


Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <gmdata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.frontrange.com/goldmine/xmlexport" xsi:namespaceSchemaLocation="http://www.frontrange.com/goldmine/xmlexport gmschema.xsd">
- <header>
  <goldmine_version>6.50.40321</goldmine_version>
- <gmdbdef>
  <gmdbfld flddbfname="CAL" fldname="ACCOUNTNO" fldtype="character" fldlen="20" />
  <gmdbfld flddbfname="CAL" fldname="ACONFIRM" fldtype="character" fldlen="3" />
  <gmdbfld flddbfname="CAL" fldname="ACTVCODE" fldtype="character" fldlen="3" />


desweiteren habe ich in den Elemeten auch mal Text über 1024 Zeichen drin
Code:
- <property name="dear">
  <property_string>Frau</property_string>
  </property>
- <property name="notes">
  <property_string>xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx</property_string>
  </property>
  </properties>
- <emails>
- <email gm_recid="A9CH2N2%@*6W)YU">

19. März 2008 10:22

ok, die Zeile mit dem xmlns musst du entweder manuell editieren, dass nur <gmdata> übrig bleibt, so mach ich das mit importen aus Exact Pro nach Navision, oder du machst dieses Stripping mit XMLDom und das Resultat übergibst du an den XMLPort.
Die Texte, die mehr als 1024 Zeichen haben, da setzt du das entsprechende Tag auf SourceType=Text und TextType auf BigText , dann kannst du die Texte wunderbar weiterverarbeiten, z.B. in Zeilen zu maximal 80 Zeichen aufspalten und in die Comments schreiben, oder zu maximal 50 und dann als Artikeltext verwenden.
Das klappt alles ganz hervorragend.

19. März 2008 18:44

Mein zu importierendes XML ist recht komplex, mit vielen geschachtelten Knoten, von denen ich aber nicht alle benötige.
Ist es denn möglich in der Definition des XMLPorts auf nicht benötigte Knoten und Elemente zu verzichten?

20. März 2008 09:47

Soweit ich das weiß kann man zumindest beim EXport nur Attribute ein- und ausblenden. Bei Elementen ist dies nicht der Fall. Beim Import habe ich das noch nicht probiert. Kann mir aber vorstellen das es auch nur bei Attributen geht.

22. März 2008 20:53

Du musst beim Import alle Tags und Attribute, die im XML-File vorkommen können, definieren. Wenn sie nicht immer dabei sein müssen, kannst du attribute als optional festlegen und Tags bei MinOccurs Zero eintragen, dann meckert Nav nicht, wenn sie nicht dabei sind.
Wenn Du sie in Navision nicht weiter verwenden willst, dann weist du ihnen einfach den Typ Text zu und ignorierst die Variablen, die du bei gleichlautenden Tags ggf umbenennen musst. die übrigen kannst du auch vom Typ Text belassen und dann manuell in die entsprechenden Felder packen oder auch tabellen und Feldern direkt zuweisen.

24. März 2008 16:54

Hallo Michael,
vielen Dank, für die Tipps.
letzendlich werde ich aber diesmal noch "händisch" das ganze umsetzen.

mittlerweile habe ich auf mibuso noch einen navxmlportgenerator entdeckt. leider ist auch der der Meinung, dass schon die xsd sich nicht auswerten lässt.

Re: erstellen eines XML Imports

18. Dezember 2008 09:48

Hallo tba,

hast du das mittlerweile händisch umgesetzt?! ... Würde mich interessieren wie genau?

Einen SOPA - Response per XML-Port zu importieren, ohne diesen vorher von Attributes und co. zu befreien, ist ja schier unmöglich, oder?

Gruß, Martin