Воскресенье, 2025-02-02

Professor VB - примеры на VB.net и C#
Меню сайта
Вход на сайт
Категории раздела
Уроки VB.net [25]
VB.net и математика [13]
Random VB [4]
VB.net - разное [7]
VB.net - Примеры программ [2]
Главная » Статьи » VB.net » Уроки VB.net

VB.net - XML (создание, поиск, редактирование)

VB.net - XML

(создание, поиск, редактирование)


 

В этой статье я расскажу о работе с файлами XML на VB.net.

- - -

 Для хранения настроек программы мы можем использовать реестр, обычные текстовые файлы или файлы xml. 

XML (англ. eXtensible Markup Language) расширяемый язык разметки

XML это специальный расширяемый язык программирования для разметки. Поэтому в файлах XML используются теги которые определяют атрибуты объектов. По внешнему виду данный язык очень сильно напоминает обычный язык HTML. Однако отличием XML является возможность пользователей задавать свои теги и использовать их в дальнейшем.

 

Что представляет из себя формат XML

 

 

Структура файла такова:

версия и язык файла - обязательная составляющая.

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

 

корневое имя содержимого файла - в данном примере Table,

-   <Product> - категория отдельных элементов

-     <Product_id>,   <Product_name>,   <Product_price> - атрибуты элементов

 

Ваш файл может содержать совершенно другие категории и быть абсолютно не похожим на этот пример. Однако, его структура остается неизменной.

 

 


<кодировка>

     <ROOT>

                <element>

                               <atrib> a1 </atrib>

                               <atrib>  a2</atrib>

                </element>

                <element>

                               <atrib> b1 </atrib>

                               <atrib> b2 </atrib>

                </element>

     </ROOT>


 

Создание xml файла

Как мы видим, такой формат файла можно использовать как базу данных. И для начала мы программно создадим XML файл.

На форму помещаем кнопку - меняем ей имя и текст (cmdNew и создать)

 

 

В код мы записываем следующее


    ' Процедура записи позиции

    Private Sub addProduct(ByVal pID As String, ByVal pName As String, ByVal pPrice As String, _

                                                            ByVal writer As Xml.XmlTextWriter)

        writer.WriteStartElement("Product")

        ' Запись открывающего тега

        writer.WriteStartElement("Product_id")

        ' Запись обычных тексовых данных в качестве содержимого тега

        writer.WriteString(pID)

        ' Запись закрывающего тега

        writer.WriteEndElement()

        writer.WriteStartElement("Product_name")

        writer.WriteString(pName)

        writer.WriteEndElement()

        writer.WriteStartElement("Product_price")

        writer.WriteString(pPrice)

        writer.WriteEndElement()

        writer.WriteEndElement()

    End Sub


 

Это необходимо для упрощения записи каждого элемента. А ниже пишем подпрограмму для записи конкретных значений в новый файл. В нашем случае это будет 3 продукта, со своим номером и ценой.

 


'новый XML

    Sub newFile()

        ' Создаем объект для записи XML-данных

        Dim Writer As New Xml.XmlTextWriter("Test.xml", System.Text.Encoding.UTF8)

        ' Записываем объявление версии XML

        Writer.WriteStartDocument(True)

        ' Указываем, что XML-документ должен быть отформатирован

        Writer.Formatting = Xml.Formatting.Indented

        ' Задаем 2 пробела для выделения вложенных данных

        Writer.Indentation = 2

        ' Записываем открывающий тег

        Writer.WriteStartElement("Table")

        ' Вызываем процедуру записи позиции

 

        addProduct(1, "Product 1", "1000", Writer)

        addProduct(2, "Product 2", "2000", Writer)

        addProduct(3, "Product 3", "3000", Writer)

 

        ' Закрываем тег

        Writer.WriteEndElement()

        ' Заканчиваем запись (закрываем все не закрытые элементы)

        Writer.WriteEndDocument()

        ' Закрываем файл

        Writer.Close()

    End Sub


 

Запускаем программу и создаем файл.

 

Общее количество элементов файла XML

 

Сейчас у нас создан маленький файл, и количество элементов легко можно посчитать. А если у вас огромная база, не будем же мы каждый раз открывать файл и смотреть на последнюю позицию. По этому мы создадим отдельную процедуру для нахождения максимального ID.

На форму помещаем еще одну кнопку - меняем имя и текст (cmdMax - max) и в ее код записываем подпрограмму maxIDxml()

  


Sub maxIDxml()

        'получение последнего (наибольшего) номерa ID

        Dim fileName As String = "Test.xml"

        'загрузка документа

        Dim xdoc As XDocument = XDocument.Load(fileName)

        Dim maxId = 0

 

        For Each xe As XElement In xdoc.Element("Table").Elements("Product")

            If xe.Element("Product_id").Value > maxId Then

                maxId += 1

            End If

        Next

       'вывод значения в имя формы

        Me.Text = Str(maxId)

    End Sub


 

Общее количество элементов (или наибольшее ID) будет выведено в имя формы.

 

Поиск значений в XML файле

Естественно, используя XML как базу данных, нам понадобится считывать некоторые  значения.

Для этого нам понадобится поиск. Помещаем на форму еще одну кнопку и текстовое поле (cmdSearch - Поиск).

В качестве примера - нам понадобится найти товар с ID = 2 и вывести результат в текстовое поле.

 


   Private Sub cmdSearch_Click(sender As Object, e As EventArgs) Handles cmdSearch.Click

        Dim fileName As String = "Test.xml"

        'загрузка документа

        Dim xdoc As XDocument = XDocument.Load(fileName)

        rtxOtvet.Text = ""

        For Each xe As XElement In xdoc.Element("Table").Elements("Product")

            If xe.Element("Product_id").Value = 2 Then

                rtxOtvet.Text += xe.Elements("Product_id").Value + " ) "

                rtxOtvet.Text += xe.Elements("Product_name").Value + " ранг "

                rtxOtvet.Text += xe.Elements("Product_price").Value + vbCrLf

            End If

        Next

    End Sub


 

Если хотите сделать поиск любой записи можно воспользоваться нумератором (NumericUpDown1)- минимальное значение которого 0, а максимальное - общее количество элементов

Помещаем нумератор на форму.

 


    Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles NumericUpDown1.ValueChanged

           element1()

    End Sub

 

    Sub element1()

        Dim nnn = NumericUpDown1.Value

        maxIDxml()

        Dim maxId_ = Val(Me.Text)

        NumericUpDown1.Maximum = maxId_

        Dim fileName As String = "Test.xml"

        Dim xdoc As XDocument = XDocument.Load(fileName)

        rtxOtvet.Text = ""

        For Each xe As XElement In xdoc.Element("Table").Elements("Product")

            If xe.Element("Product_id").Value = nnn Then

                rtxOtvet.Text += xe.Elements("Product_id").Value + " ) "

                rtxOtvet.Text += xe.Elements("Product_name").Value + " ранг "

                rtxOtvet.Text += xe.Elements("Product_price").Value + vbCrLf

                NumRang.Value = xe.Elements("Product_price").Value

            End If

        Next

    End Sub


 

Изменение значений в XML файле

После того как мы нашли запись может потребоваться изменить ее. Допустим в нашей базе Product_price означает ранг товара - и он измеряется от -1 до 5. Добавим на форму еще 1 нумератор (NumRang)

 


Private Sub NumRang_ValueChanged(sender As Object, e As EventArgs) Handles NumRang.ValueChanged

        Dim nnn = NumericUpDown1.Value

        Dim fileName As String = "Test.xml"

        Dim xdoc As XDocument = XDocument.Load(fileName)

        For Each xe As XElement In xdoc.Element("Table").Elements("Product")

            If xe.Element("Product_id").Value = nnn Then

                xe.Elements("Product_price").Value = NumRang.Value

                xdoc.Save(fileName)

            End If

        Next

        element1()

    End Sub


 

Теперь, выбрав товар, мы можем менять его ранг ( в нашем примере ранг от -1 до 5). Сразу после смены ранга - он сохраняется в файл.

***

В этой статье мы научились создавать xml файл, узнавать общее количество элементов в нем, искать в файле, а так же менять значения.

 

Смотреть видео

В начало

 

 



 

 

Категория: Уроки VB.net | Добавил: ProfessorVB (2015-12-07)
Просмотров: 9282 | Теги: xml количество элементов, база данных, xml создание, XML, Vb.net, xml поиск значений, xml редактирование | Рейтинг: 5.0/5
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    Видео Switch массивы уравнения геометрия continue forEach while Обработка событий задать цвет C# math Vb.net xml количество элементов xml поиск значений математика видеоуроки Soft системы Google pirat Proxy tor НОД нок добавление записи в xml поиск Уроки генератор hello world время деструкторы конструкторы дроби калькулятор десятичные дроби решебник сокращение дробей си шарп мнемоника тренажер random количество дней между датами professorvb дата Урок mindgames алгебра многомерные слова словарь Пароль cos SIN база timer рандом Цикл Break DO for RGB условия массив элементов xml редактирование xml создание вирус MenuStrip AntiCenz fri-gate запрещенные сайты база данных Open RichTextBox XML удалить из xml save TopMost анекдот создать XML Классы Тест OpenFileDialog английский развитие иностранные слова DateTimePicker календарь массив перемешивание массива Анаграммы Рифмоплет Сравнение дробей Меморина скорочтение Использование ребусы комплексные числа программа генератор имен
    Copyright ProfessorVB © 2025