Разобрать таблицу HTML в формат данных Xamarin - PullRequest
0 голосов
/ 20 июня 2019

Я пишу приложение Xamarin, в котором есть функция для получения некоторых данных из таблицы HTML. Я хочу как-то отобразить эти данные в моем приложении; на данный момент я думаю, что ListView - это путь, но я открыт для альтернатив.

В своем прототипе для веб-сканирования я просто взял таблицу HTML с помощью HtmlAgility, а затем перебрал строки и вставил их в DataTable:

                foreach (HtmlNode row in table.SelectNodes("tr"))
                {
                    DataRow dr = dt.NewRow();
                    int counter = 1;

                    foreach (HtmlNode cell in row.SelectNodes("td"))
                    {
                        switch (counter)
                        {
                            case 1:
                                dr["Column1"] = cell.InnerText;
                                break;
                            case 2:
                                dr["Column2"] = cell.InnerText;
                                break;
                            case 3:
                                dr["Column3"] = cell.InnerText;
                                break;
                            case 4:
                                dr["Column4"] = cell.InnerText;
                                break;
                            case 5:
                                dr["Column5"] = cell.InnerText;
                                break;
                            case 6:
                                dr["Column6"] = cell.InnerText;
                                break;
                            case 7:
                                dr["Column7"] = cell.InnerText;
                                break;
                        }
                        counter++;
                    }
                    dt.Rows.Add(dr);
                }

Я не думаю, что использование DataTable очень разумно для мобильного приложения (или даже возможно?).

В настоящее время я думаю, что я должен использовать SQLite-Net для создания локальной базы данных и вставки записей из моей таблицы HTML в мою таблицу базы данных.

Это разумный подход, и как мне поступить с SQLite?

1 Ответ

0 голосов
/ 21 июня 2019

Лучшим вариантом будет.

Сначала объявите объект, представляющий каждую строку списка,

Пример:

public class Element
{
    public string Element1 {get; set;}
    public string Element2 {get; set;}
}

Здесь вы получитекаждая строка элемента с различными данными, отображаемыми в столбцах вашего списка.

public class Element
{
    public string Element1 {get; set;}
    public string Element2 {get; set;}
}

Затем в вашей ViewModel объявите список для хранения элементов.

public ObvervableCollection<Element> MyItems = new ObservableCollection();

После этого в вашем Page.xaml объявите представление списка, запишите заголовок, чтобы отобразить заголовки таблицы, а затем в ячейке просмотра отобразите элементы

<ListView x:Name=”MainListView” ItemsSource={Binding MyItems}>  
    <ListView.HeaderTemplate>  
        <DataTemplate>  
            <Grid>  
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                   <Label Text=”Column1" Grid.Column="0"/>

                   <Label Text=”Column2" Grid.Column="1"/>
           </Grid>
        </DataTemplate>  
    </ListView.HeaderTemplate>  
    <ListView.ItemTemplate>  
        <DataTemplate>  
            <ViewCell>  
               <Grid>  
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Label Text=”{Binding Element1}" Grid.Column="0"/>

                <Label Text=”{Binding Element2}" Grid.Column="1"/>
            </Grid>
            </ViewCell>  
        </DataTemplate>  
    </ListView.ItemTemplate>  
</ListView>  
...