获取列表元素时,HTML解析

问题描述:

我有这样一段HTML的:获取列表元素时,HTML解析

<li class="myclass"> 
      <ul class="myclass2"> 
       <li><span>Name1</span><span>Value1</span></li><li><span>Name2</span><span>Value2</span></li><li><span>Name3</span><span>Value3</span></li> 
      </ul> 
     </li> 

我试图解析这个HTML这样的使用HTML敏捷性包:

var values = mydetails.DocumentNode.QuerySelector(".myclass").QuerySelector("ul").InnerHtml; 

这给了我这部分:

<li><span>Name1</span><span>Value1</span></li><li><span>Name2</span><span>Value2</span></li><li><span>Name3</span><span>Value3</span></li> 

但我不知道如何走得更远,我需要名称和值,但我不知道如何得到它们。你能告诉我一个办法吗?谢谢。

你应该给你的项目一个html-id,那么它应该很容易在javascript中获得这个元素。我不知道你的框架,但在别人这是很容易的,例如jQuery中:$("#id")

+0

这些项目没有ID,我不能给他们一个ID。 – jason

+0

有没有办法做到这一点没有ID? – jason

+0

你可以试试getChild()。如果你在ul上使用这个函数,它会给你一个数组。第一项然后是'.... QuerySelector(“ul”)。getChild [0] ...' – jenald

您可以使用正则表达式来从所有的标签获取值

public void ProcessSpans(string inputHTML) 
{ 
    string pattern = @"<span([^>]*)class=\""(\w+)\""([^>]*)>(.*)<\/span>"; 
    RegexOptions regexOptions = RegexOptions.Multiline; 
    Regex regex = new Regex(pattern, regexOptions); 
    var matches = regex.Matches(inputHTML); 
    //Process the matches with your logic. 
} 

然后调用方法因此

var values = mydetails.DocumentNode.QuerySelector(".myclass").QuerySelector("ul").InnerHtml; 
ProcessSpans(values);