Lấy chữ trong thẻ HTML

Em có đoạn HTML sau:

<table cellpadding="0" cellspacing="0" id="id_tbl" class=" cke_show_border">
  <tbody>
     <tr>
       <td>
         <span class="title_editor">Heading</span>
       </td>
     </tr>
     <tr>
        <td class="content_tbl" id="id_td">
          <p align="center" style="text-align:center; margin:0in 0in 0.0001pt">
            <span style="font-size:14pt">
              <span style="line-height:150%">
                <span style="font-family:"Times New Roman",serif">
                   <b>hello world < /b>
                </span>
              </span>
             </span>
            </p>
           </td>
          </tr>
      </tbody>
</table>

Giờ em muốn lấy chữ “hello world” thì phải làm thế nào ạ.
Em copy xpath thì được thế này: //*[@id="id_td"]/p/span/span/span/b/text(). Em đã thử như sau, em dùng HtmlAgilityPack:

string curUrl = geckoWebBrowser1.Url.ToString();
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(curUrl);
var nodes = doc.SelectNodes("//*[@id='id_td']/p/span/span/span/b/text()");
richTextBox1.Text = nodes.ToString();

Nhưng vẫn không được, có bác nào giúp em dùng hướng nào để lấy được chữ không ạ. Em cảm ơn nhiều.

thử bỏ phần /text() xem sao

bỏ vẫn không được bác ạ. Bác có hướng nào giúp em với. Cảm ơn bác

cai xpath thì như vậy //*[@id="id_td"]/p/span/span/span/b là đúng rồi. Có điều phải debug xem chỗ nó selectNodes ra là một mảng hay một phần tử, nếu là Node thì nó có phương thức nào để lấy innerHTML hoặc innerText hay không ?

Rõ ràng là chọn nhiều rồi (mảng). Phải xửa lý để lấy phần tử đầu tiên nữa.

var nodes = doc.SelectNodes("//*[@id='id_td']/p/span/span/span/b");
var text = nodes.First().Attributes["content"].Value;
// Hoặc
var text = doc.SelectSingleNode("//*[@id='id_td']/p/span/span/span/b").Attributes["content"].Value;
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?