C# SelectNode始终选择可枚举中的第一个节点<;HtmlNode>;迭代时

C# SelectNode始终选择可枚举中的第一个节点<;HtmlNode>;迭代时,c#,html-agility-pack,C#,Html Agility Pack,我试图从多个htmlnodes集合中解析多个键,我会使用selectnodes->div[@class=“key”]来完成这项工作,但出于某种原因,这总是选择所有键,但我希望这些键采用列表格式,其中列表索引引用行索引,在这之后,我尝试选择一个节点,但从逻辑上讲,这总是选择“esc”键,因为这是第一行/索引,你知道我如何将它们分开吗 DirtyFix: var page = browser.Load(layout_link); var key_row

我试图从多个htmlnodes集合中解析多个键,我会使用selectnodes->div[@class=“key”]来完成这项工作,但出于某种原因,这总是选择所有键,但我希望这些键采用列表格式,其中列表索引引用行索引,在这之后,我尝试选择一个节点,但从逻辑上讲,这总是选择“esc”键,因为这是第一行/索引,你知道我如何将它们分开吗

DirtyFix:

            var page = browser.Load(layout_link);
            var key_rows = Enumerable.Range(1, 6).
                Select(i => $"//div[@class=\"kr{i}\"]").
                Select(row => page.DocumentNode.SelectSingleNode(row)).
                Select(row => row.OuterHtml.Split('\n').Select(raw_html => HtmlNode.CreateNode(raw_html)));
资料来源:

class KeyboardLayoutScraper
{
    private static readonly HtmlWeb browser = new HtmlWeb();
    public static readonly string base_website = "http://kbdlayout.info";

    // Currently voided for testing
    public static void fetchKeyboardLayout()
    {
        var layout_link = GetKBLayoutSource();
        if (layout_link == null) throw new ArgumentNullException();
        else
        {
            var page = browser.Load(layout_link);
            var key_rows = Enumerable.Range(1, 6).
                Select(i => $"//div[@class=\"kr{i}\"]").
                Select(row => page.DocumentNode.SelectSingleNode(row));

            foreach(var key_row in key_rows)
            {  // Always selects the "ESC" key? 
                Console.WriteLine(key_row.SelectSingleNode("//div[@class=\"key\"]").InnerText);
               // Always returns 105 
                Console.WriteLine(key_row.SelectNodes("//div[@class=\"key\"]").Count);
            }
        }
    }

    // fetch page where structure is located
    private static string GetKBLayoutSource()
    {
        var page = browser.Load(base_website);
        var links_on_page = page.DocumentNode.SelectNodes("//a").
            Where(i => i.InnerText.Contains(System.Windows.Forms.InputLanguage.CurrentInputLanguage.LayoutName)).
            Select(i => $"{base_website}{i.Attributes["href"]?.Value}");

        return links_on_page.FirstOrDefault();
    }
}
HtmlStructure:

<div class="kr1">
<div class="key"><div class="kc"><div class="kb" style="left:  0px"></div><div class="kt" style="left:  6px"></div><div class="kls" style="left:  6px"><div class="kl kl0 ts5"><div>&#x1B;</div></div><div class="kl kl4 ts4"><div title="Esc">Esc</div></div><div class="kl kl6 ts5"><div title=" U&#x2B;001B &lt;control&gt;&#xD;&#xA;SHIFT:  U&#x2B;001B &lt;control&gt;&#xD;&#xA;CONTROL:  U&#x2B;001B &lt;control&gt;">&#x1B;</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:108px"></div><div class="kt" style="left:114px"></div><div class="kls" style="left:114px"><div class="kl kl4 ts4"><div>F1</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:162px"></div><div class="kt" style="left:168px"></div><div class="kls" style="left:168px"><div class="kl kl4 ts4"><div>F2</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:216px"></div><div class="kt" style="left:222px"></div><div class="kls" style="left:222px"><div class="kl kl4 ts4"><div>F3</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:270px"></div><div class="kt" style="left:276px"></div><div class="kls" style="left:276px"><div class="kl kl4 ts4"><div>F4</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:351px"></div><div class="kt" style="left:357px"></div><div class="kls" style="left:357px"><div class="kl kl4 ts4"><div>F5</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:405px"></div><div class="kt" style="left:411px"></div><div class="kls" style="left:411px"><div class="kl kl4 ts4"><div>F6</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:459px"></div><div class="kt" style="left:465px"></div><div class="kls" style="left:465px"><div class="kl kl4 ts4"><div>F7</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:513px"></div><div class="kt" style="left:519px"></div><div class="kls" style="left:519px"><div class="kl kl4 ts4"><div>F8</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:594px"></div><div class="kt" style="left:600px"></div><div class="kls" style="left:600px"><div class="kl kl4 ts4"><div>F9</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:648px"></div><div class="kt" style="left:654px"></div><div class="kls" style="left:654px"><div class="kl kl4 ts4"><div>F10</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:702px"></div><div class="kt" style="left:708px"></div><div class="kls" style="left:708px"><div class="kl kl4 ts4"><div>F11</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:756px"></div><div class="kt" style="left:762px"></div><div class="kls" style="left:762px"><div class="kl kl4 ts4"><div>F12</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:824px"></div><div class="kt" style="left:830px"></div><div class="kls" style="left:830px"><div class="kl kl4 ts4"><div>PrtSc</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:878px"></div><div class="kt" style="left:884px"></div><div class="kls" style="left:884px"><div class="kl kl4 ts4"><div>Scroll Lock</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:932px"></div><div class="kt" style="left:938px"></div><div class="kls" style="left:938px"><div class="kl kl4 ts4"><div>Pause</div></div></div></div></div>
</div>
<div class="kr2">
<div class="key"><div class="kc"><div class="kb" style="left:   0px"></div><div class="kt" style="left:   6px"></div><div class="kls" style="left:   6px"><div class="kl kl0 ts5"><div>³</div></div><div class="kl kl6 ts5"><div title="² U&#x2B;00B2 SUPERSCRIPT TWO&#xD;&#xA;SHIFT: ³ U&#x2B;00B3 SUPERSCRIPT THREE">²</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:  54px"></div><div class="kt" style="left:  60px"></div><div class="kls" style="left:  60px"><div class="kl kl0 ts5"><div>1</div></div><div class="kl kl6 ts5"><div>&amp;</div></div><div class="kl kl8 ts5"><div title="&amp; U&#x2B;0026 AMPERSAND&#xD;&#xA;SHIFT: 1 U&#x2B;0031 DIGIT ONE&#xD;&#xA;CAPITAL: 1 U&#x2B;0031 DIGIT ONE&#xD;&#xA;SHIFT&#x2B;CAPITAL: &amp; U&#x2B;0026 AMPERSAND&#xD;&#xA;CONTROL&#x2B;MENU: | U&#x2B;007C VERTICAL LINE">|</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 108px"></div><div class="kt" style="left: 114px"></div><div class="kls" style="left: 114px"><div class="kl kl0 ts5"><div>2</div></div><div class="kl kl6 ts5"><div>é</div></div><div class="kl kl8 ts5"><div title="é U&#x2B;00E9 LATIN SMALL LETTER E WITH ACUTE&#xD;&#xA;SHIFT: 2 U&#x2B;0032 DIGIT TWO&#xD;&#xA;CAPITAL: 2 U&#x2B;0032 DIGIT TWO&#xD;&#xA;SHIFT&#x2B;CAPITAL: é U&#x2B;00E9 LATIN SMALL LETTER E WITH ACUTE&#xD;&#xA;CONTROL&#x2B;MENU: @ U&#x2B;0040 COMMERCIAL AT">@</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 162px"></div><div class="kt" style="left: 168px"></div><div class="kls" style="left: 168px"><div class="kl kl0 ts5"><div>3</div></div><div class="kl kl6 ts5"><div>&quot;</div></div><div class="kl kl8 ts5"><div title="&quot; U&#x2B;0022 QUOTATION MARK&#xD;&#xA;SHIFT: 3 U&#x2B;0033 DIGIT THREE&#xD;&#xA;CAPITAL: 3 U&#x2B;0033 DIGIT THREE&#xD;&#xA;SHIFT&#x2B;CAPITAL: &quot; U&#x2B;0022 QUOTATION MARK&#xD;&#xA;CONTROL&#x2B;MENU: # U&#x2B;0023 NUMBER SIGN">#</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 216px"></div><div class="kt" style="left: 222px"></div><div class="kls" style="left: 222px"><div class="kl kl0 ts5"><div>4</div></div><div class="kl kl6 ts5"><div>&#x27;</div></div><div class="kl kl8 ts5"><div title="&#x27; U&#x2B;0027 APOSTROPHE&#xD;&#xA;SHIFT: 4 U&#x2B;0034 DIGIT FOUR&#xD;&#xA;CAPITAL: 4 U&#x2B;0034 DIGIT FOUR&#xD;&#xA;SHIFT&#x2B;CAPITAL: &#x27; U&#x2B;0027 APOSTROPHE&#xD;&#xA;CONTROL&#x2B;MENU: { U&#x2B;007B LEFT CURLY BRACKET">{</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 270px"></div><div class="kt" style="left: 276px"></div><div class="kls" style="left: 276px"><div class="kl kl0 ts5"><div>5</div></div><div class="kl kl6 ts5"><div>(</div></div><div class="kl kl8 ts5"><div title="( U&#x2B;0028 LEFT PARENTHESIS&#xD;&#xA;SHIFT: 5 U&#x2B;0035 DIGIT FIVE&#xD;&#xA;CAPITAL: 5 U&#x2B;0035 DIGIT FIVE&#xD;&#xA;SHIFT&#x2B;CAPITAL: ( U&#x2B;0028 LEFT PARENTHESIS&#xD;&#xA;CONTROL&#x2B;MENU: [ U&#x2B;005B LEFT SQUARE BRACKET">[</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 324px"></div><div class="kt" style="left: 330px"></div><div class="kls" style="left: 330px"><div class="kl kl0 ts5"><div>6</div></div><div class="kl kl6 ts5"><div>§</div></div><div class="kl kl8 ts5"><div title="§ U&#x2B;00A7 SECTION SIGN&#xD;&#xA;SHIFT: 6 U&#x2B;0036 DIGIT SIX&#xD;&#xA;CAPITAL: 6 U&#x2B;0036 DIGIT SIX&#xD;&#xA;SHIFT&#x2B;CONTROL:  U&#x2B;001E &lt;control&gt;&#xD;&#xA;SHIFT&#x2B;CAPITAL: § U&#x2B;00A7 SECTION SIGN&#xD;&#xA;CONTROL&#x2B;MENU: ^ U&#x2B;005E CIRCUMFLEX ACCENT">^</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 378px"></div><div class="kt" style="left: 384px"></div><div class="kls" style="left: 384px"><div class="kl kl0 ts5"><div>7</div></div><div class="kl kl6 ts5"><div title="è U&#x2B;00E8 LATIN SMALL LETTER E WITH GRAVE&#xD;&#xA;SHIFT: 7 U&#x2B;0037 DIGIT SEVEN&#xD;&#xA;CAPITAL: 7 U&#x2B;0037 DIGIT SEVEN&#xD;&#xA;SHIFT&#x2B;CAPITAL: è U&#x2B;00E8 LATIN SMALL LETTER E WITH GRAVE">è</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 432px"></div><div class="kt" style="left: 438px"></div><div class="kls" style="left: 438px"><div class="kl kl0 ts5"><div>8</div></div><div class="kl kl6 ts5"><div title="! U&#x2B;0021 EXCLAMATION MARK&#xD;&#xA;SHIFT: 8 U&#x2B;0038 DIGIT EIGHT&#xD;&#xA;CAPITAL: 8 U&#x2B;0038 DIGIT EIGHT&#xD;&#xA;SHIFT&#x2B;CAPITAL: ! U&#x2B;0021 EXCLAMATION MARK">!</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 486px"></div><div class="kt" style="left: 492px"></div><div class="kls" style="left: 492px"><div class="kl kl0 ts5"><div>9</div></div><div class="kl kl6 ts5"><div>ç</div></div><div class="kl kl8 ts5"><div title="ç U&#x2B;00E7 LATIN SMALL LETTER C WITH CEDILLA&#xD;&#xA;SHIFT: 9 U&#x2B;0039 DIGIT NINE&#xD;&#xA;CAPITAL: 9 U&#x2B;0039 DIGIT NINE&#xD;&#xA;SHIFT&#x2B;CAPITAL: ç U&#x2B;00E7 LATIN SMALL LETTER C WITH CEDILLA&#xD;&#xA;CONTROL&#x2B;MENU: { U&#x2B;007B LEFT CURLY BRACKET">{</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 540px"></div><div class="kt" style="left: 546px"></div><div class="kls" style="left: 546px"><div class="kl kl0 ts5"><div>0</div></div><div class="kl kl6 ts5"><div>à</div></div><div class="kl kl8 ts5"><div title="à U&#x2B;00E0 LATIN SMALL LETTER A WITH GRAVE&#xD;&#xA;SHIFT: 0 U&#x2B;0030 DIGIT ZERO&#xD;&#xA;CAPITAL: 0 U&#x2B;0030 DIGIT ZERO&#xD;&#xA;SHIFT&#x2B;CAPITAL: à U&#x2B;00E0 LATIN SMALL LETTER A WITH GRAVE&#xD;&#xA;CONTROL&#x2B;MENU: } U&#x2B;007D RIGHT CURLY BRACKET">}</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 594px"></div><div class="kt" style="left: 600px"></div><div class="kls" style="left: 600px"><div class="kl kl0 ts5"><div>°</div></div><div class="kl kl6 ts5"><div title=") U&#x2B;0029 RIGHT PARENTHESIS&#xD;&#xA;SHIFT: ° U&#x2B;00B0 DEGREE SIGN&#xD;&#xA;CAPITAL: ° U&#x2B;00B0 DEGREE SIGN&#xD;&#xA;SHIFT&#x2B;CAPITAL: ) U&#x2B;0029 RIGHT PARENTHESIS">)</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 648px"></div><div class="kt" style="left: 654px"></div><div class="kls" style="left: 654px"><div class="kl kl0 ts5"><div>_</div></div><div class="kl kl6 ts5"><div title="- U&#x2B;002D HYPHEN-MINUS&#xD;&#xA;SHIFT: _ U&#x2B;005F LOW LINE&#xD;&#xA;CONTROL:  U&#x2B;001F &lt;control&gt;&#xD;&#xA;CAPITAL: _ U&#x2B;005F LOW LINE&#xD;&#xA;SHIFT&#x2B;CAPITAL: - U&#x2B;002D HYPHEN-MINUS">-</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 702px;width:108px"></div><div class="kt" style="left:708px;width:96px"></div><div class="kls" style="left:708px"><div class="kl kl0 ts5" style="width:90px;"><div style="width:90px;max-width:90px;">&#x8;</div></div><div class="kl kl4 ts4" style="width:90px;"><div style="width:90px;max-width:90px;" title="Backspace">Backspace</div></div><div class="kl kl6 ts5" style="width:90px;"><div style="width:90px;max-width:90px;" title=" U&#x2B;0008 &lt;control&gt;&#xD;&#xA;SHIFT:  U&#x2B;0008 &lt;control&gt;&#xD;&#xA;CONTROL:  U&#x2B;007F &lt;control&gt;">&#x8;</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 824px"></div><div class="kt" style="left: 830px"></div><div class="kls" style="left: 830px"><div class="kl kl4 ts4"><div>Insert</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 878px"></div><div class="kt" style="left: 884px"></div><div class="kls" style="left: 884px"><div class="kl kl4 ts4"><div>Home</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 932px"></div><div class="kt" style="left: 938px"></div><div class="kls" style="left: 938px"><div class="kl kl4 ts4"><div>Page Up</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left: 999px"></div><div class="kt" style="left:1005px"></div><div class="kls" style="left:1005px"><div class="kl kl4 ts4"><div>Num Lock</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:1053px"></div><div class="kt" style="left:1059px"></div><div class="kls" style="left:1059px"><div class="kl kl0 ts5"><div>/</div></div><div class="kl kl6 ts5"><div title="/ U&#x2B;002F SOLIDUS&#xD;&#xA;SHIFT: / U&#x2B;002F SOLIDUS">/</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:1107px"></div><div class="kt" style="left:1113px"></div><div class="kls" style="left:1113px"><div class="kl kl0 ts5"><div>*</div></div><div class="kl kl6 ts5"><div title="* U&#x2B;002A ASTERISK&#xD;&#xA;SHIFT: * U&#x2B;002A ASTERISK">*</div></div></div></div></div>
<div class="key"><div class="kc"><div class="kb" style="left:1161px"></div><div class="kt" style="left:1167px"></div><div class="kls" style="left:1167px"><div class="kl kl0 ts5"><div>-</div></div><div class="kl kl6 ts5"><div title="- U&#x2B;002D HYPHEN-MINUS&#xD;&#xA;SHIFT: - U&#x2B;002D HYPHEN-MINUS">-</div></div></div></div></div>
</div>

etc...

;Esc和x1B;
一层楼
地上二层
F3
F4
F5
F6
F7
F8
F9
F10
F11
F12
PrtSc
滚动锁
暂停
³²
一,|
2é@
3"#
4'{
5([
6§^
7è
8.
9ç{
0à}
°)
_-
&#退格;
插入
家
翻页
数字锁
//
**
--
等