2016-11-16 129 views
0

我有這樣一段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> 

但我不知道如何走得更遠,我需要名稱和值,但我不知道如何得到它們。你能告訴我一個辦法嗎?謝謝。

回答

1

你應該給你的項目一個html-id,那麼它應該很容易在javascript中獲得這個元素。我不知道你的框架,但在別人這是很容易的,例如jQuery中:$("#id")

+0

這些項目沒有ID,我不能給他們一個ID。 – jason

+0

有沒有辦法做到這一點沒有ID? – jason

+0

你可以試試getChild()。如果你在ul上使用這個函數,它會給你一個數組。第一項然後是'.... QuerySelector(「ul」)。getChild [0] ...' – jenald

1

您可以使用正則表達式來從所有的標籤獲取值

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);