Attribute eines Elternknotens abspeichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Attribute eines Elternknotens abspeichern

    Hallo zusammen,

    ich habe folgendes Problem: Ich will aus einer XML-Datei bestimte Knoten suchen. Diese Knoten sollen aber mit einem Element aus der nächsthöheren Eben verknüpft und in einer Datenbank gespeichert werden.
    Da mehrere Elemente dasselbe Elternlement besitzen reicht eine eifnache ancestor Abfrage über xPath nicht aus. Weiß jemand irgendwelche Möglichkeiten, wie z.B. eine Schleife??

    Hier mein XML-Dokument (Ausschnitt):

    Quellcode

    1. <Assignment>
    2. <UID>3</UID>
    3. <TaskUID>6</TaskUID>
    4. <ResourceUID>6</ResourceUID>
    5. <ExtendedAttribute>
    6. <FieldID>255852663</FieldID>
    7. </ExtendedAttribute>
    8. <ExtendedAttribute>
    9. <FieldID>255852664</FieldID>
    10. </ExtendedAttribute>
    11. <ExtendedAttribute>
    12. <FieldID>255852665</FieldID>
    13. </ExtendedAttribute>
    14. </Assignment>
    Alles anzeigen


    Nun will ich zu jedem ExtendedAttribute die dazugehörige UID abspeichern!!

    Für Informationen wäre ich sehr dankbar.

    Gruß,
  • Hallo, es wäre schön wenn du uns etwas mehr Futter geben würdest, so dass hier keiner einen neuen XML-Parser für dich schreiben muss. Ein guter Aansatz wäre schonmal mit welcher Sprache du arbeitest. C, C++, Java, PHP.

    Hast du schon einen Parser? Einen Ansatz? Wenn ja poste den mal bitte.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Hallo,

    ja, sowas habe ich schon.
    Erstens: ich arbeite mit PHP 5.
    Zweitens: Mein PHP-Code sieht wie folgt aus:

    Quellcode

    1. $string='Assignments/Assignment/ExtendedAttribute/FieldID'; //Lage im XML-Format
    2. $row='FieldID'; //Spaltenname
    3. import($string, $row, $table_name, $xs, $conn);
    4. $a_ea_fieldid=$result;
    5. $counter=$a_ea_fieldid;
    6. FUNCTION import($string, $row, $table_name, $xs, $conn){
    7. GLOBAL $test ;
    8. //Sucht nach Attributen
    9. GLOBAL $result;
    10. $result = $xs->xpath($string);
    11. }
    Alles anzeigen


    Quellcode

    1. <Assignment>
    2. <UID>3</UID>
    3. <TaskUID>6</TaskUID>
    4. <ResourceUID>6</ResourceUID>
    5. <ExtendedAttribute>
    6. <FieldID>255852663</FieldID>
    7. </ExtendedAttribute>
    8. <ExtendedAttribute>
    9. <FieldID>255852664</FieldID>
    10. </ExtendedAttribute>
    11. <ExtendedAttribute>
    12. <FieldID>255852665</FieldID>
    13. </ExtendedAttribute>
    14. </Assignment>
    Alles anzeigen


    Hier sucht er mir nach allen FIELDID Attributen, und das klappt auch wunderbar. Nur brauche ich halt noch als weitere Information die UID des Elternknotens Assignment mit abgespeichert. Ich denke über die XPath-Funktionen wie ancestor oder anders herum über child ist das nciht machbar. Wäre es eine Möglichkeit einfach ein unter-Array zu erstellen und dann über eine Schleife die UID's aller FieldID's abzufragen??

    Grüße
  • So, habs jetzt selber hinbekommen.
    Für alle, die es interessiert, hier der Code:

    Quellcode

    1. $string='/descendant::Assignment'; //Lage im XML-Format
    2. $row='UID'; //Spaltenname
    3. $result = $xs->xpath($string);
    4. $array=array();
    5. FOR ($i=0 ,$cnt=count($a_uid); $i<$cnt; $i++){
    6. $aa = $result[$i];
    7. FOR ($j=0 ,$cnt2=count($result[$i]->ExtendedAttribute); $j<$cnt2; $j++){
    8. //echo($aa->ExtendedAttribute);
    9. //echo($aa->UID);
    10. $arr[$j] = $aa->UID;
    11. }
    12. $array= array_merge($array, $arr);
    13. }
    14. $a_ea_uid=$array;
    Alles anzeigen