簡體   English   中英

使用c#控制台應用程序使用HTMLAgility包從Xpath提取值

[英]Using HTMLAgility pack to extract value from a Xpath using c# console app

我有以下HTML代碼行,並且我將google chrome用於xpath。

<DIV id=TasheelPaymentCtrl1_dvPayment>
<TABLE border=1 cellSpacing=0 borderColor=black cellPadding=7 width=625 align=center>
<TBODY>
<TR>
<TD class=ReceiptHeadArbCenterHead1 width=320>المسمى </TD>
<TD class=ReceiptHeadArbCenterHead1 width=75>دفع إلى</TD>
<TD class=ReceiptHeadArbCenterHead1 width=75>القيمة</TD>
<TD class=ReceiptHeadArbCenterHead1 width=75>الكمية</TD>
<TD class=ReceiptHeadArbCenterHead1 width=75>المجموع</TD></TR>
<TR>
<TD class=ReceiptHeadArbCenterHead>رسوم وزارة العمل</TD>
<TD class=ReceiptValueArbCenter>MOFI</TD>
<TD class=ReceiptValueArbCenter>3</TD>
<TD class=ReceiptValueArbCenter>1</TD>
<TD class=ReceiptValueArbCenter>3</TD>
<TR>
<TD class=ReceiptHeadArbCenterHead>رسوم الدرهم الإلكتروني</TD>
<TD class=ReceiptValueArbCenter>MOFI</TD>
<TD class=ReceiptValueArbCenter>3</TD>
<TD class=ReceiptValueArbCenter>1</TD>
<TD class=ReceiptValueArbCenter>3</TD>
<TR>
<TD class=ReceiptHeadArbCenterHead>رسوم مراكز الخدمة </TD>
<TD class=ReceiptValueArbCenter>MOFI</TD>
<TD class=ReceiptValueArbCenter>47</TD>
<TD class=ReceiptValueArbCenter>1</TD>
<TD class=ReceiptValueArbCenter>47</TD>
<TR>
<TD class=ReceiptHeadArbCenterHead1 colSpan=4>المجموع</TD>
<TD class=ReceiptValueArbCenter>53</TD></TR></TBODY></TABLE></DIV>

我想提取值3、3、47和53

我嘗試使用此xpath

 var gf = doc.DocumentNode.SelectNodes("//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[2]/td[5]");

                foreach (var node in gf)
                {


                    Console.WriteLine(node.InnerText); //output: "3"
                }

                var sf = doc.DocumentNode.SelectNodes("//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[3]/td[5]");

                foreach (var node in sf)
                {


                    Console.WriteLine(node.InnerText); //output: "3"
                }
                var tf = doc.DocumentNode.SelectNodes("//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[4]/td[5]");

                foreach (var node in tf)
                {


                    Console.WriteLine(node.InnerText); //output: "47"
                }
var Allf = doc.DocumentNode.SelectNodes("//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[5]/td[2]");

                foreach (var node in Allf )
                {


                    Console.WriteLine(node.InnerText); //output: "53"
                }

但是我收到了空對象異常。。我使用了Google chrome開發人員工具來復制xpath。 我收到空值異常。 如何提取值..我的問題是為什么我會得到空點引用異常,xpath值中有任何錯誤? 請幫我。

您已經發現,某些XPath表達式不起作用,因為<tr>標記並未全部關閉。

因此,您需要在XPath表達式中滿足此要求:

  • //div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[2]/td[5] -不變
  • //div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[3]/td[5] -應該是//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[2]/tr/td[5]
  • //div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[4]/td[5] -應該是//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[2]/tr/tr/td[5]
  • //div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[5]/td[2] -應該是//div[@id='TasheelPaymentCtrl1_dvPayment']/table/tbody/tr[2]/tr/tr/tr/td[2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM