2013-11-12 2 views
3

У меня есть некоторые HTML код:Xpath первый текст, прежде чем нужен тег

<dl> 
    <div> 
     <div>foo</div> 
    <div> 
    "I need getting only this text" 
    <dd> 
     <div>foo</div> 
     <div>foo</div> 
    </dd> 
    <div> 
     <div>foo</div> 
    <div> 
    "I need getting only this text" 
    <dd> 
     <div>foo</div> 
     <div>foo</div> 
    </dd> 
</dl> 

Так что мне нужно получать только первый текст перед обязательный тег (не «Foo»). Я попробовал синтаксис как

// текст() [(предшествующее :: дд)] [некоторое целое число]

или

// текст() [(предшествующий: : дд)] [последняя()]

но это все теперь работает для меня, потому что подсчет DIV с "foo" - undefined. Мне нужен некоторый xpath, например // dl/text(), но возвращает прямого предка 'dl', на каком-то уровне глубже.

ответ

4

Так мне нужно получать только первый текст до требуемого тега

Как об этом:

//dd/preceding-sibling::text()[1] 

т.е. найти dd теги, а затем для каждого из них взять ближайшую предшествующую родственный текстовый узел. Учитывая, что ваш пример будет возвращен набор из двух текстовых узлов, каждый из которых содержит текст

' 
    "I need getting only this text" 
    ' 

(без одиночных кавычек, то есть символ новой строки, четыре пространства, двойные кавычки, мне нужно получать только этот текст, двойные кавычки , новая линия, четыре пробела).

+0

спасибо, это помогло – facetostool

Смежные вопросы