Ankündigung

Einklappen
Keine Ankündigung bisher.

Xpath - Ermittlung mehrerer Werte

Einklappen

Neue Werbung 2019

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

  • Xpath - Ermittlung mehrerer Werte

    Hallo,

    ich bin gerade dabei eine Webseite zu parsen, damit ich das entsprechende Zahlenmaterial in eine DB schreiben kann.

    Ich habe auch schon ein xPath Query definiert

    PHP-Code:
    .//*[@id='val7'] 
    Als Wert erhalte ich dann 21,7 zurück. Soweit so gut

    Ich habe aber mehrere Felder, welche ich auslesen möchte. Wie müsste mein Query aussehen, so dass ich alle Werte in ein Array bekomme?

    PHP-Code:
    <div id="calval7" class="calibration round span-24 last">
      <
    div class="span-7 ialigned">
        <
    h3 class="title">RAUMTEMPNACHT</h3>
      </
    div>
      <
    div class="values span-7">
        <
    div class="editors">
          <
    a href="javascript://" onmousedown="change('val7','+',10,30,'0.1',true);return false;">
            <
    img src="./pics/button_higher.png">
          </
    a>
          <
    a style="clear:left;" href="javascript://" onmousedown="change('val7','-',10,30,'0.1',true);return false;" id="editorslower">
            <
    img src="./pics/button_lower.png">
          </
    a>
        </
    div>
        <
    input type="text" style="width:3.6em" class="edit upndown" id="val7" name="val7" value="">
        
        <
    script type="text/javascript" language="javascript">
          
    valSettings['val7'] = new Array();
          
    valSettings['val7']['type'] = 'float';       valSettings['val7']['min'] = '10';
          
    valSettings['val7']['max'] = '30';
          
                
          
    jsvalues['7'] = new Array();
          
    jsvalues['7']['id']='val7';
          
    jsvalues['7']['val']='21,7';
        
    </script>
       </div>
      <div class="values span-1 append-1">°C</div>
      <div class="green round-right span-8 last">
        <p>Gültige Werte: Eingabe zwischen<br>10 °C und 30 °C</p>
      </div>
      </div> 
    Grüße

  • #2
    Zitat von FRAD Beitrag anzeigen
    Ich habe aber mehrere Felder, welche ich auslesen möchte. Wie müsste mein Query aussehen, so dass ich alle Werte in ein Array bekomme?
    Es kann/darf nicht mehrere Elemente mit der gleichen ID geben.

    Kommentar


    • #3
      Ich konkretisiere einmal meinen Quellcode auf den ich mich beziehe - hier ein weiteres Input Feld, welches ich auslesen möchte.

      PHP-Code:
      <div id="calval5" class="calibration round span-24 last">
        <
      div class="span-7 ialigned">
          <
      h3 class="title">RAUMTEMPTAG</h3>
        </
      div>
        <
      div class="values span-7">
          <
      div class="editors">
            <
      a href="javascript://" onmousedown="change('val5','+',10,30,'0.1',true);return false;">
              <
      img src="./pics/button_higher.png">
            </
      a>
            <
      a style="clear:left;" href="javascript://" onmousedown="change('val5','-',10,30,'0.1',true);return false;" id="editorslower">
              <
      img src="./pics/button_lower.png">
            </
      a>
          </
      div>
          <
      input type="text" style="width:3.6em" class="edit upndown" id="val5" name="val5" value="">
          
          <
      script type="text/javascript" language="javascript">
            
      valSettings['val5'] = new Array();
            
      valSettings['val5']['type'] = 'float';       valSettings['val5']['min'] = '10';
            
      valSettings['val5']['max'] = '30';
            
                  
            
      jsvalues['5'] = new Array();
            
      jsvalues['5']['id']='val5';
            
      jsvalues['5']['val']='21,7';
          
      </script>
         </div>
        <div class="values span-1 append-1">°C</div>
        <div class="green round-right span-8 last">
          <p>Gültige Werte: Eingabe zwischen<br>10 °C und 30 °C</p>
        </div>
        </div> 
      Mit dem oben genannten Query "treffe" ich das Feld nicht - was ja auch klar ist, da ich oben eine feste ID definiert habe. Mich würde aber interessieren, wie ich ID=VAL5 und VAL7 mit einem Query treffe?

      Hier die Seite um die es geht: Link

      Kommentar


      • #4
        Ich habe mal ein wenig mit xPath gespielt. Weiß nicht ob dies der Königsweg ist - funktioniert zumindest auf den ersten Blick:

        PHP-Code:
        //input[contains(@id,'val')] 
        Was meint ihr?

        Jetzt muss ich nur noch schauen, dass ich die Werte in ein PHP Array bekomme...

        Kommentar


        • #5
          Zitat von FRAD Beitrag anzeigen
          Mit dem oben genannten Query "treffe" ich das Feld nicht - was ja auch klar ist, da ich oben eine feste ID definiert habe. Mich würde aber interessieren, wie ich ID=VAL5 und VAL7 mit einem Query treffe?
          Afaik kann xpath (im Gegensatz zu CSS) keine Elemente anhand dem Anfang eines Attributwertes suchen, aber warum verwendest du nicht einfach Dinge die in jedem zu suchenden Element gleich sind (class-Attribut, die Position oder die Tatsache das alles input-Element sind)?

          Kommentar


          • #6
            Jetzt sehe ich erst einmal, dass alle VALUES leer sind... Wie hole ich mir denn den Wert aus

            jsvalues['5']['val']='21,7';

            raus? Sprich ich will die 21,7 haben ...

            Mit diesem Query gehe ich zwar auf den Attributwert aber ist doch okay oder?

            //input[contains(@id,\"val\")]


            Kommentar


            • #7
              Muss nochmal das Thema aufgreifen. Ich finde einfach keinen Ansatz, den Wert aus dem Javascript zu ermitteln mittels xPath.

              PHP-Code:
               <script type="text/javascript" language="javascript">
                    
              valSettings['val5'] = new Array();
                    
              valSettings['val5']['type'] = 'float';       valSettings['val5']['min'] = '10';
                    
              valSettings['val5']['max'] = '30';
                    
                          
                    
              jsvalues['5'] = new Array();
                    
              jsvalues['5']['id']='val5';
                    
              jsvalues['5']['val']='21,7';
                  
              </script> 
              Habt ihr einen Tipp für mich, wie ich die 21,7 in ein Array bekomme?

              Kommentar

              Lädt...
              X