Frage

Zur Zeit arbeite ich auf Daten von HTML extrahieren. Ich möchte den Text zwischen zwei <p class="xfHeading"> Tags extrahieren.

         <p class="xfHeading"><b>XYZ:</b></p> 
            <p>asdfghjk</p>  
            <p>sdsdsd</p>  
            <p>asdvcvcfghjk</p>  

         <p class="xfHeading"><b>ABC:</b></p> 
            <P>fvgbhnjm</P>  

         <p class="xfHeading"><b>PQR:</b></p> 
            <ul> 

            </ul> 

         <p class="xfHeading"><b>MNO:</b></p> 
             <ul> 
                <li>jdjshdj</li>  
             </ul> 

Die Ausgang sollte:

asdfghjk

sdsdsd

asdvcvcfghjk

Eine Möglichkeit, dies zu tun ist:

/p[class="xfHeading"]/following-sibling::p[0]|/p[class="xfHeading"]/following-sibling::p[1]|/p[class="xfHeading"]/following-sibling::p[2]

oder

/p[class="xfHeading"]/following-sibling::p[position()<4]

Da jedoch der Inhalt zwischen hält über die Änderung die ganze Zeit ich brauche eine Lösung, wobei der Gehalt zwischen den beiden Tags <p class="xfHeading"> extrahiert wird.

War es hilfreich?

Lösung

Mit

(//p[@class="xfHeading"])[1]
          /following-sibling::p
             [. << (//p[@class="xfHeading"])[2]]
                 /text()

Dieses Mittel : Wählen Sie die Text-Knoten Kinder aller p Elemente, die Geschwister des ersten p Element im Dokument mit class Attribut-Wert von xfHeading folgen, und dass zur gleichen Zeit vor dem zweiten p Element in dem Dokument mit class Attributwert xfHeading aufweist.

scroll top