[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    20

    Datenstruktur Namen der Felder auslesen

    Moin moin,

    ich habe mit XML-Into ein XML in die Datenstrukturen (XML_DS) geschoben.
    Dazu habe ich zusätzliche Datenstruktur mit Feldnamen (FELD_DS) , die ich zum befüllen einer Datei benötige.
    Wie kann ich nun die die beiden Datenstrukturen miteinander vergleichen?

    Sprich ich möchte wissen ob eines der Elemente aud der FELD_DS mit dem Namen aus der XML_DS übereinstimmt.

    Aufbau XML_DS
    XML_DS
    FELDA
    FELDB
    FELDC

    FELD_DS
    NAMEA INZ(FELDC)
    NAMEB INZ(FELDA)
    NAMEC INZ(FELDB)

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Das ist nicht nötig bzw. vollkommen unsinnig, da bei fehlender Übereinstimmung die Information nicht gelesen wird.
    Wenn in der XML ein Knoten den Namen "XYZ" hat, benötigst du eine DS mit dem Namen XYZ. Ebenso gilt dies für Attributnamen, die dann in Felder umgesetzt werden.
    Per Option kannst du bestimmen, dass z.B. ungültige Zeichen in Namen für RPG mit "_" ersetzt werden.
    Desweiteren gibt es Optionen für fehlende Einträge sowie zuviel Einträge um die Daten trotzdem zulesen.

    Geschachtelte Strukturen definiert man dann mit einzelnen DS'n, die man dann per LIKEDS und Qualified strukturiert.
    Mehrfachvorkommen einer XML-Struktur (Array) definiert man dann mit DIM. Hier gibt es dann auf der DS noch die Mögloichkeit ein Count-Feld für die Anzahl Vorkommen anzulegen.
    Nach dem XML-INTO kann man dann auf die endgültige geschachtelte DS zugreifen und auf Attribute und Arrays zugreifen.

    Hier hat sich für mich die Definition aller Felder als Zeichenfeld herauskristallisiert um ggf. Konvertierungen mit %DEC(), %DATE() oder sonstwie vorzunehmen.

    Ich weiß auch nicht, was deine FELD_DS bewirken soll, da es keine Möglichkeit gibt, aus dem Inhalt einer Variablen, die einen Namen enthält, die Adresse derselben im Speicher zu ermitteln.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    20
    Klar, die DS und deren Definitionen sind kein Problem, das XML bekomme ich ohne weitere in die DS.

    Nun sollen aber nur bestimmte Felder in "meiner DB" upgedatet werden. Allerdings muss ich in der XML-DS alle Felder der Datei angegeben, da theoretisch ja auch alle Felder zum updaten ausgewählt werden sein können.

    Das XML kommt aus einer DB, die grundsätzliche alle Werte überträgt, daher muss die XML-DS alle Felder beinhalten, da ansonsten dauerndes neu kompilieren bei Änderungen der zu aktualisierenden Felder.

    Die Felder die aktualisiert werden sollen, kommen aus "meiner" DB und werden in einer DS gelesen, deren Elemente dann die Namen der zu aktualisierende Felder beinhalten. Können 10 oder 50 Felder sein.
    Nun will ich mir nur die Felder aus der XML-DS holen, die auch aktualisiert werden sollen.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Da hilft nur die klassische Variante:

    select;
    when Feld1 = "ABC";
    when Feld1 = "XYZ";
    :
    :
    when ...
    endsl;

    Tut mir leid, aber RPGLE ist keine dynamische Sprache wie Java/C++/.NET o.ä., in der ich mit variablen Feldlisten umgehen könnte. Zumal du ja auch beim Ansprechen der Zieltabelle mit konstanten Variablennamen umgehen musst.
    Dann musst du leider eine andere Sprache wählen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    20
    Sehr schade.
    Dann noch eine "persönliche" Frage.
    Ich habe eigentlich das Profil Devjo hier gehabt, mit dem kann ich allerdings keine Beiträge mehr schreiben, sprich Fragen stellen, antworten geht auch nicht mehr.
    Könnte man das event. wieder frei schalten?
    Dies hier ist der Account eines Freundes und den möchte ich eigentlich eiter nutzen.
    Gruß

  6. #6
    Registriert seit
    Oct 2013
    Beiträge
    171
    Vielleicht wärst Du auch besser dran, wenn Du den SAX-Parser nimmst und Dir das Mapping auf DB-Felder selber strickst (mit einer Definitionstabelle) und daraus wiederum ein dynamisches SQL-Statement bastelst, das Dir das in eine Datei einfügt.
    Dann brauchst Du das Programm nie mehr umwandeln, weil Du nur die Mapping-Datei ändern musst.

Similar Threads

  1. Antworten: 2
    Letzter Beitrag: 08-08-16, 09:34
  2. verbotene Variablen, Zeichen und Namen
    By mahones in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 06-08-15, 17:35
  3. Antworten: 7
    Letzter Beitrag: 24-04-14, 10:00
  4. Phishing Mail im Namen von newsolutions
    By scheipl in forum Archiv NEWSblibs
    Antworten: 13
    Letzter Beitrag: 16-10-12, 16:31
  5. Neue Namen für VEDA-Software
    By Kirsten Steer in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 12-03-02, 08:00

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •