2009-05-28 6 views
0

Ich versuche, einige XML in JavaScript mit E4X zu filtern und habe bestimmte Bedürfnisse. Angesichts der folgenden:E4X Filter nach Textinhalt?

 
    var xml = <body> 
     <div> 
     <p>This is some text that I have.</p> 
     </div> 
    </div>; 

Ich möchte das Dokument nach den Absätzen suchen, die mit „Dies ist ein Text“.

Derzeit kann ich folgendes im Absatz zu bekommen:

xml..div(p.text().toString().indexOf("This is some text") === 0) 

jedoch die „echte“ XML viel komplexer ist (man denke: eine regelmäßige Web-Seite). Es gibt keine Garantie dafür, dass es einen div gibt, der die fraglichen Absätze direkt erzieht. Es kann andere Paragraphen vor/nach den fraglichen Paragraphen innerhalb desselben Elternelements geben.

Irgendwelche Ideen?

Antwort

3

Verwenden Sie den Doppelpunktoperator, um nach allen <p> Knoten eines beliebigen Verschachtelungsausgleichs zu suchen, und filtern Sie dann die Knoten aus, um nur diejenigen einzuschließen, die mit Ihrer gewünschten Zeichenfolge beginnen. Sie wurden in der Nähe, man muss nur > seit dem < div loszuwerden, wie Sie gesagt haben, die <div> nicht vorhanden sein könnte .:

xml..p.(text().toString().indexOf("This is some text") == 0);