2012-09-15 36 views
2

我試圖解析表單動作值和輸入名稱以下面的HTML代碼值值:解析表單操作和輸入名稱和使用HTML敏捷性包

  <form method="post" action="actionURL" autocomplete="" name="login_form" id="login_form" onsubmit="return hash2(this)"> 

      <input type="hidden" name=".tries" value="1"> 
      <input type="hidden" name=".src" value="ym"> 
      <input type="hidden" name=".md5" value=""> 
      <input type="hidden" name=".hash" value=""> 
      <input type="hidden" name=".js" value=""> 
      <input type="hidden" name=".last" value=""> 
      <input type="hidden" name="promo" value=""> 
      <input type="hidden" name=".intl" value="us"> 
      <input type="hidden" name=".lang" value="en"> 
      <input type="hidden" name=".bypass" value=""> 
      <input type="hidden" name=".partner" value=""> 
      <input type="hidden" name=".u" value="8013sg1858dp9"> 
      <input type="hidden" name=".v" value="0"> 
      <input type="hidden" name=".challenge" value="fUhehaaMq9c2lQjndCps_rNu1eSB"> 
      <input type="hidden" name=".yplus" value=""> 
      <input type="hidden" name=".emailCode" value=""> 
      <input type="hidden" name="pkg" value=""> 
      <input type="hidden" name="stepid" value=""> 
      <input type="hidden" name=".ev" value=""> 
      <input type="hidden" name="hasMsgr" value="0"> 
      <input type="hidden" name=".chkP" value="Y"> 
      <input type="hidden" name=".done" value="somevalue"> 
      <input type="hidden" name=".pd" value="ym_ver=0&c=&ivt=&sg="> 
      <input type="hidden" name=".ws" id=".ws" value="0"> 
      <input type="hidden" name=".cp" id=".cp" value="0">  
      <input type="hidden" name="nr" value="0"> 

      <input type="hidden" name="pad" id="pad" value="5"> 
      <input type="hidden" name="aad" id="aad" value="5"> 

          <div id='inputs'> 

       <label for='username'>Yahoo! ID</label> 
            <input name='login' id='username' maxlength='96' tabindex='1' value=''> 

        <p id='ex'>(e.g. test)</p> 

       <label for='passwd'>Password</label> 
       <input name='passwd' id='passwd' type='password' maxlength='64' tabindex='2'> 


    <div id="captchaDiv"></div> 
      </div> 
<div id='fun'></div> 

     <div id='persistency'> 
      <input type='checkbox' name='.persistent' id='persistent' tabindex='4' value='y' > 
      <p> 
       <label for='persistent'>Keep me signed in</label> 
       <br> 
       <span id='uncheck'>(Uncheck if on a shared computer)</span> 
      </p> 
     </div> 


    <div id='submit'> 
     <button type='submit' id='.save' name='.save' class='secondaryCta' tabindex='5'> 
      Sign In 
     </button>   </div> 
</form> 

上述表單包含,輸入型在直接的孩子和孩子的旁邊。在此處使用示例時:https://stackoverflow.com/a/9890022/1007447 c#上的代碼跟蹤找不到名稱爲「form」的元素或Descendants。

如何獲取表單動作和所有輸入類型的值? (有時,我也需要跳過用戶名密碼部分)

回答

1

這已經在Stack Overflow上討論過幾次了。

答案與您提到的問題相同。你要做的:

HtmlNode.ElementsFlags.Remove("form"); 

var doc = ... //Load the document here 

var nodes = doc.DocumentNode.SelectNodes("//form//input"); 

的關鍵是上線

HtmlNode.ElementsFlags.Remove("form") 

以及爲什麼你需要添加它可以發現在以下頁面的解釋:

+0

由於花了一些時間回答,我使用正則表達式解決方案。我會再試一次。 – Jones

+0

@ William.Ebe很高興聽到您找到了一個很好的選擇,但我建議您在解析HTML時使用庫而不是正則表達式:) –