Ankündigung

Einklappen
Keine Ankündigung bisher.

kaskadisches XML und MySQL

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • kaskadisches XML und MySQL

    Erstmal ein wunderschönen naja guten Tag ,
    ich habe ein Problem in der Verständlichkeit und des Aufbaus einer XML Datei.
    Die Struktur selber sieht wie folgt aus:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <system>
      <information>
        <export>
          <type>
            <initial/>
            <stocks/>
          </type>
        </export>
      </information>  
      <product>
        <product-id>1111111</product-id>
        <ean>12345678</ean>
        <stocks>
          <stock house="1">
            <count>5.0</count>
          </stock>
        </stocks>
      </product>
    </system>
    Im Prinzip öffne ich die XML über den Befehl:
    Code:
    	$xml = simplexml_load_file($xml_datei);
    Wenn ich dann ein print_r mache gibt er auch alles aus, und jetzt kommt das Problem. Egal wie ich versuche auf den Inhalt zu zugreifen, passiert entweder nix oder nur Fehler.
    Da ich jetzt mehrere Ansätze hatte und alle eigentlich nicht funktioniert haben, kann ich hier auch kein Verarbeitungscode schreiben. Vielleicht hatte jemand von euch schon diesen Fall und kann mir bei der Lösungssuche helfen.

    Ach so, ich muss unter product an product-id sowie an den count kommen

    Vielen Dank im Voraus.

  • #2
    Moin, willkommen im Forum,

    hast du dir schon XPath angesehen?
    Beispiele: http://de.wikipedia.org/wiki/XPath#Beispiel
    Damit kann man gut rumprobieren: http://www.xpathtester.com/xpath

    z.B. '//product-id' für die id
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Für die product-id ist ein kleiner Trick notwendig
      PHP-Code:
      $product_id = (string) $xml->product->{'product-id'}; 
      Auf count kannst du ohne Tricks zugreifen.

      Kommentar


      • #4
        Zitat von fl4t Beitrag anzeigen
        Erstmal ein wunderschönen naja guten Tag ,

        Ach so, ich muss unter product an product-id sowie an den count kommen

        Vielen Dank im Voraus.
        Du fragst im Datenbank-Forum, daher eine Datenbank-Antwort:

        Code:
        test=# select xpath('product/product-id','<?xml version="1.0" encoding="UTF-8"?>
        <system>
          <information>
            <export>
              <type>
                <initial/>
                <stocks/>
              </type>
            </export>
          </information>
          <product>
            <product-id>1111111</product-id>
            <ean>12345678</ean>
            <stocks>
              <stock house="1">
                <count>5.0</count>
              </stock>
            </stocks>
          </product>
        </system>');
                       xpath
        ------------------------------------
         {<product-id>1111111</product-id>}
        (1 row)
        
        Time: 1,246 ms
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Ich glaube er will dann eher
          PHP-Code:
          //product/product-id/text() 

          Kommentar


          • #6
            Zitat von rkr Beitrag anzeigen
            Ich glaube er will dann eher
            PHP-Code:
            //product/product-id/text() 
            Also das hier?

            Code:
            test=*# select xpath('product/product-id/text()','<?xml version="1.0" encoding="UTF-8"?>
            <system>
              <information>
                <export>
                  <type>
                    <initial/>
                    <stocks/>
                  </type>
                </export>
              </information>
              <product>
                <product-id>1111111</product-id>
                <ean>12345678</ean>
                <stocks>
                  <stock house="1">
                    <count>5.0</count>
                  </stock>
                </stocks>
              </product>
            </system>');
               xpath
            -----------
             {1111111}
            (1 row)
            
            Time: 0,350 ms
            PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

            Kommentar


            • #7
              Mir war schon klar, dass PostgreSQL das hin bekommt

              Kommentar


              • #8
                Zitat von rkr Beitrag anzeigen
                Mir war schon klar, dass PostgreSQL das hin bekommt
                Dafür bekommst glatt ein Bienchen ins Mutti-Heft
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #9
                  Und da Mysql im Titel steht...

                  Code:
                  SELECT ExtractValue('<?xml version="1.0" encoding="UTF-8"?><system>
                    <information>
                      <export>
                        <type>
                          <initial/>
                          <stocks/>
                        </type>
                      </export>
                    </information>
                    <product>
                      <product-id>1111111</product-id>
                      <ean>12345678</ean>
                      <stocks>
                        <stock house="1">
                          <count>5.0</count>
                        </stock>
                      </stocks>
                    </product>
                  </system>','/system/product/product-id') AS product_id

                  Kommentar


                  • #10
                    Zitat von erc Beitrag anzeigen
                    Und da Mysql im Titel steht...

                    Oh, wußte gar nicht, daß MySQL das kann
                    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                    Kommentar


                    • #11
                      Danke für die Antworten, und ja hier handelt es sich um Datenbankfragen, da ich versuche eine XML Datei mit der oben genannten Struktur in eine Datenbank speichern zu wollen. Ob es jedoch über ein direkten Weg geht oder ob man es erstmal mit PHP aufarbeiten muss, weiß ich eben nicht.
                      Ich schaffe es nicht einmal direkt auf die einzelnen Datensätze zu zugreifen.
                      Ist das jetzt die beste Alternative auf die Datensätze zu zugreifen oder gibt es noch einen besseren und Handlebaren.
                      Der Inhalt hat so um die 100.000 Datensätze, daher sollte es der für das System leichteste Weg handeln.

                      Kommentar


                      • #12
                        So, ich habs hinbekommen. Nochmals großen Dank für die zahlreichen Antworten.
                        Mein Problem war, dass ich bis dato nie mit XML gearbeitet hatte und deswegen den Wald vor lauter Bäumen nicht sah.
                        Ich habe einfach dahinter eine foreach Schleife gebaut, und somit konnte ich die Daten explizit auswählen.

                        -closed- und -thx-

                        Kommentar

                        Lädt...
                        X