2017-01-05 4 views
0

Отсюда:Извлечь текст и игнорировать следующий узел

<span class="postbody"> 
    <span style="color: #8e2fb6"> 
     <span style="font-weight: bold">nickname</span> 
    </span>  
    <br> 
    Example text 
    <br> 
    Example text 
    <br>  
    <p class="signature">THIS IS WHAT I DO NOT WANT</p> 
</span> 

Я хочу извлечь:

<br> 
Example text 
<br> 
Example text 
<br> 

Я пробовал: span/text()[1] но это, кажется, не работает. Я всегда получаю нежелательный класс p. Можно ли это сделать?

ответ

0

Вы можете использовать селектор jQuery для postbody, а затем метод .text, который должен игнорировать HTML. Это также будет игнорировать
.

$ ('. Postbody'). Text();

Альтернативой может быть итерация через дочерние объекты $ ('. Postbody'). Text();

1

Прежде всего, необходимо загрузить строку Html в HTMLDocument или HtmlNode (с помощью функции .load()).

В коллекции ChildNodes содержатся все дочерние элементы вашего текущего узла (в основном, каждый узел под span.postbody).

После того, что вам нужно сделать, это довольно очевидно, просто захватить #text и бр узлы (имейте в виду, что вы будете получать некоторые #text узлы, которые имеют только пробельные символы. Вы можете отфильтровать его в результате.

//load html to HtmlNode 
node.ChildNodes.Where(n => n.Name.Equals("#text") || n.Name.Equals("br")) //It will return collection of HtmlNode 
+1

Добавление некоторого объяснения помогло бы сделать этот ответ лучше. – miken32

+0

Спасибо. Я хотел бы добавить некоторые пояснения, но это вроде очевидно. во всяком случае, я объясню это немного в моем редактировать –

+0

Даже «очевидные» ответы могут быть полезны из объяснений. w, поскольку это была всего лишь строка кода, в которой больше ничего нет. Редактирование - хорошее улучшение. – miken32

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