我有一个这样的页面,在li
标签中有3个值
<li>nafiz</li>
<li>ACE</li>
<li>Sanah</li>
这段代码只给我最后一个内文:
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个值?
答案 0 :(得分: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();
}
并使用它......
foreach (string item in GetItems(YourText))
{
MessageBox.Show(item);
}
答案 1 :(得分:1)
如果将3个值存储在字符串数组或列表中会更容易,例如:
var names = new List<string>();
.....
.....
foreach (HtmlNode nd in doc.DocumentNode.SelectNodes("//li"))
{
names.Add(nd.InnerText.Trim());
}
InnerText
已经是string
类型,无需添加其他ToString()
。上面示例中的Trim()
意味着从前导和尾随空格中清除name
。