c# чтение htmlAgilityPack из блока идентификаторов до следующего блока идентификаторов - PullRequest
0 голосов
/ 09 марта 2020

У меня есть html документ, подобный этому

   <tr  id="__TOC_1">

                                <div id="AUTOGENBOOKMARK_3_7899df20-f104-434d-a5e4-fa293412f5db">
                                    <div style="visibility:hidden">&nbsp;</div>
                                </div>
                                <div>District name</div>
                                <div>July&nbsp;&nbsp;&nbsp;&nbsp; 2019</div>
                                <div>Something</div>
                                <div>Something</div>
                                <div>Address</div>
                                <div>
                                    <div style="visibility:hidden">&nbsp;</div>
                                </div>
                                <div>
                                    <div style="visibility:hidden">&nbsp;</div>
                                </div>
                        </tr>

<tr>
                            <td class="style_6" >
                                <div class="style_7" id="AUTOGENBOOKMARK_4_d4d6">Apartment number.</div>
                            </td>
                            <td class="style_6" s>
                                <div class="style_7" id="AUTOGENBOOKMARK_5_87b456a7" >Personal account</div>
                            </td>
                            <td class="style_6">
                                <div class="style_7" id="AUTOGENBOOKMARK_6_2b05c0c6>Accrued</div>
                            </td>
                            <td class="style_6" >
                                <div class="style_7" id="AUTOGENBOOKMARK_7_f66f8084>Received</div>
                            </td>
                        </tr>
<tr>
                            <td class="style_6">
                                <div>195</div>
                            </td>
                            <td class="style_6">
                                <div>00060631402</div>
                            </td>
                            <td class="style_6">
                                <div>155.63</div>
                            </td>
                            <td class="style_6">
                                <div">155.63</div>
                            </td>

    <tr>
                            <td class="style_6">
                                <div>Total</div>
                            </td>
                            <td class="style_6">
                                <div>30</div>
                            </td>
                            <td class="style_6">
                                <div>0.00</div>
                            </td>
                            <td class="style_6">
                                <div>271.04</div>
                            </td>
                        </tr>

, и этот код повторяется n раз с __TOC_2 ...__ TOC_3 .. и затем

мне нужно взять название района , дата месяца, пропустить следующий блок и взять всю информацию до итогового значения

, и я хочу записать ее в свой объект

 public class PaymentInfo
{
    public string District { get; set; }

    public string PaymentDate { get; set; }

    public string Address { get; set; }
}

 public class Payment
{
    public string ApartmentNumber { get; set; }

    public int PersonalAccount { get; set; }

    public decimal Accrued { get; set; }

    public decimal Received { get; set; }
}

я думаю, что мне нужно прочитать первый блок идентификатора до другого, но я не понимаю, как я могу остановить и отфильтровать информацию

1 Ответ

0 голосов
/ 09 марта 2020

Вы получаете эти узлы по xpath starts-with

//tr[starts-with(@id,'__TOC')]

Затем передайте эти результаты для обработки каждого блока с жестким кодом:

  • порядок массива div для получения имени района , адрес, ...
  • div id AUTOGENBOOKMARK_4, AUTOGENBOOKMARK_5, чтобы получить квартиру, номер, ...
...