2014-09-20 155 views
0

我有一個網頁,這樣其在li標籤從HTML標籤中提取文本

<li>nafiz</li> 
<li>ACE</li> 
<li>Sanah</li> 

3倍的值和該代碼給了我只有最後的innerText:

public string names = ""; 
    public string names2 = ""; 
    public string names3 = ""; 


    // Use this for initialization 
    void Start() { 

     HtmlWeb hw = new HtmlWeb(); 
     HtmlAgilityPack.HtmlDocument doc = hw.Load(openUrl); 

    foreach (HtmlNode nd in doc.DocumentNode.SelectNodes("//li")) 
     { 
      names=nd.InnerText.ToString(); 

     } 

我怎麼能存儲所有這些字符串中有3個值?

回答

1

會更容易:

var names = new List<string>(); 
..... 
..... 
foreach (HtmlNode nd in doc.DocumentNode.SelectNodes("//li")) 
{ 
    names.Add(nd.InnerText.Trim()); 
} 

InnerText已屬於string無需額外加入ToString()。在上面的例子中,Trim()意味着從前導空白和尾隨空白處清除name

+0

非常感謝...它的工作 – NafizImtiaz 2014-09-20 07:47:37

1

您可以使用此功能

string[] GetItems(string htmlText) 
    { 
     List<string> Answer = new List<string>(); 
     for (int i = 0; i < htmlText.Length; i++) 
     { 
      int start = htmlText.IndexOf('>', i); 
      i = start; 
      int end = htmlText.IndexOf('<', i); 

      if (end == -1 || start == -1) 
       break; 

      string Item = htmlText.Substring(start + 1, end - start - 1); 
      if (Item.Trim() != "") 
       Answer.Add(Item); 

      i = end + 1; 
     } 
     return Answer.ToArray(); 
    } 

,並用它......如果你存儲在字符串數組或列表中的3個值,例如

 foreach (string item in GetItems(YourText)) 
    { 
      MessageBox.Show(item); 
    }