Воскресенье, 2026-02-15

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)
Просмотров: 9456 | Теги: xml количество элементов, база данных, xml создание, XML, Vb.net, xml поиск значений, xml редактирование | Рейтинг: 5.0/5
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    урок C# си шарп видео hello world MenuStrip Генератор имен Switch дроби решебник Алгебра системы уравнения геометрия Vb.net генератор уроки математика программа условия Math массив элементов видеоуроки добавление записи в xml анекдот поиск создать XML удалить из xml калькулятор НОД нок время дата Деструкторы конструкторы тест сокращение дробей десятичные дроби тренажер английский развитие мнемоника иностранные слова random рандом professorvb OpenFileDialog Timer mindgames цикл словарь база пароль слова cos sin комплексные числа вирус массив классы массивы многомерные Break Continue do for forEach While Обработка событий rgb задать цвет XML база данных xml количество элементов xml поиск значений xml редактирование xml создание soft AntiCenz fri-gate google pirat proxy tor запрещенные сайты Open save RichTextBox TopMost DateTimePicker календарь количество дней между датами перемешивание массива Анаграммы Меморина Ребусы Рифмоплет скорочтение Сравнение дробей использование
    Copyright ProfessorVB © 2026