Учебники

VB.Net — обработка XML

Расширяемый язык разметки (XML) — это язык разметки, очень похожий на HTML или SGML. Это рекомендуется Консорциумом World Wide Web и доступно в качестве открытого стандарта.

Пространство имен System.Xml в .Net Framework содержит классы для обработки документов XML. Ниже приведены некоторые из наиболее часто используемых классов в пространстве имен System.Xml.

Sr.No. Класс и описание
1

XmlAttribute

Представляет атрибут. Допустимые значения и значения по умолчанию для атрибута определены в определении типа документа (DTD) или в схеме.

2

XmlCDataSection

Представляет раздел CDATA.

3

XmlCharacterData

Предоставляет методы обработки текста, которые используются несколькими классами.

4

XmlComment

Представляет содержимое комментария XML.

5

XmlConvert

Кодирует и декодирует имена XML и предоставляет методы для преобразования между типами среды выполнения общего языка и типами языка определения схемы XML (XSD). При преобразовании типов данных возвращаемые значения не зависят от локали.

6

XmlDeclaration

Представляет узел объявления XML <? Xml version = ‘1.0’ …?>.

7

XmlDictionary

Реализует словарь, используемый для оптимизации реализаций чтения и записи XML в Windows Communication Foundation (WCF).

8

XmlDictionaryReader

Абстрактный класс, который Windows Communication Foundation (WCF) наследует от XmlReader для выполнения сериализации и десериализации.

9

XmlDictionaryWriter

Представляет абстрактный класс, который Windows Communication Foundation (WCF) наследует от XmlWriter для выполнения сериализации и десериализации.

10

XmlDocument

Представляет документ XML.

11

XmlDocumentFragment

Представляет легкий объект, который полезен для операций вставки дерева.

12

XmlDocumentType

Представляет объявление типа документа.

13

XmlElement

Представляет элемент.

14

XmlEntity

Представляет объявление сущности, например <! ENTITY …>.

15

XmlEntityReference

Представляет узел ссылки на сущность.

16

XmlException

Возвращает подробную информацию о последнем исключении.

17

XmlImplementation

Определяет контекст для набора объектов XmlDocument.

18

XmlLinkedNode

Получает узел, непосредственно предшествующий или следующий за этим узлом.

19

XmlNode

Представляет один узел в документе XML.

20

XmlNodeList

Представляет упорядоченную коллекцию узлов.

21

XmlNodeReader

Представляет читателя, который обеспечивает быстрый, без кэширования прямой доступ только к данным XML в XmlNode.

22

XmlNotation

Представляет объявление нотации, например <! NOTATION …>.

23

XmlParserContext

Предоставляет всю контекстную информацию, необходимую XmlReader для анализа фрагмента XML.

24

XmlProcessingInstruction

Представляет инструкцию обработки, которую XML определяет для хранения специфичной для процессора информации в тексте документа.

25

XmlQualifiedName

Представляет полное имя XML.

26

XmlReader

Представляет читателя, который обеспечивает быстрый, не кэшированный, прямой доступ к данным XML.

27

XmlReaderSettings

Задает набор функций для поддержки объекта XmlReader, созданного методом Create.

28

XmlResolver

Разрешает внешние ресурсы XML, названные универсальным идентификатором ресурса (URI).

29

XmlSecureResolver

Помогает защитить другую реализацию XmlResolver, оборачивая объект XmlResolver и ограничивая ресурсы, к которым имеет доступ базовый XmlResolver.

30

XmlSignificantWhitespace

Представляет пробел между разметкой в ​​узле смешанного содержимого или пробелом в области xml: space = ‘preserve’. Это также называется значительным пробелом.

31

XmlText

Представляет текстовое содержимое элемента или атрибута.

32

XmlTextReader

Представляет читателя, который обеспечивает быстрый, не кэшированный, прямой доступ к данным XML.

33

XmlTextWriter

Представляет средство записи, обеспечивающее быстрый, не кэшированный, прямой способ генерации потоков или файлов, содержащих данные XML, которые соответствуют W3C Extensible Markup Language (XML) 1.0 и пространствам имен в рекомендациях XML.

34

XmlUrlResolver

Разрешает внешние ресурсы XML, названные универсальным идентификатором ресурса (URI).

35

XmlWhitespace

Представляет пустое пространство в содержимом элемента.

36

XmlWriter

Представляет средство записи, обеспечивающее быстрое, не кэшированное, предназначенное только для пересылки средство создания потоков или файлов, содержащих данные XML.

37

XmlWriterSettings

Задает набор функций для поддержки объекта XmlWriter, созданного методом XmlWriter.Create.

XmlAttribute

Представляет атрибут. Допустимые значения и значения по умолчанию для атрибута определены в определении типа документа (DTD) или в схеме.

XmlCDataSection

Представляет раздел CDATA.

XmlCharacterData

Предоставляет методы обработки текста, которые используются несколькими классами.

XmlComment

Представляет содержимое комментария XML.

XmlConvert

Кодирует и декодирует имена XML и предоставляет методы для преобразования между типами среды выполнения общего языка и типами языка определения схемы XML (XSD). При преобразовании типов данных возвращаемые значения не зависят от локали.

XmlDeclaration

Представляет узел объявления XML <? Xml version = ‘1.0’ …?>.

XmlDictionary

Реализует словарь, используемый для оптимизации реализаций чтения и записи XML в Windows Communication Foundation (WCF).

XmlDictionaryReader

Абстрактный класс, который Windows Communication Foundation (WCF) наследует от XmlReader для выполнения сериализации и десериализации.

XmlDictionaryWriter

Представляет абстрактный класс, который Windows Communication Foundation (WCF) наследует от XmlWriter для выполнения сериализации и десериализации.

XmlDocument

Представляет документ XML.

XmlDocumentFragment

Представляет легкий объект, который полезен для операций вставки дерева.

XmlDocumentType

Представляет объявление типа документа.

XmlElement

Представляет элемент.

XmlEntity

Представляет объявление сущности, например <! ENTITY …>.

XmlEntityReference

Представляет узел ссылки на сущность.

XmlException

Возвращает подробную информацию о последнем исключении.

XmlImplementation

Определяет контекст для набора объектов XmlDocument.

XmlLinkedNode

Получает узел, непосредственно предшествующий или следующий за этим узлом.

XmlNode

Представляет один узел в документе XML.

XmlNodeList

Представляет упорядоченную коллекцию узлов.

XmlNodeReader

Представляет читателя, который обеспечивает быстрый, без кэширования прямой доступ только к данным XML в XmlNode.

XmlNotation

Представляет объявление нотации, например <! NOTATION …>.

XmlParserContext

Предоставляет всю контекстную информацию, необходимую XmlReader для анализа фрагмента XML.

XmlProcessingInstruction

Представляет инструкцию обработки, которую XML определяет для хранения специфичной для процессора информации в тексте документа.

XmlQualifiedName

Представляет полное имя XML.

XmlReader

Представляет читателя, который обеспечивает быстрый, не кэшированный, прямой доступ к данным XML.

XmlReaderSettings

Задает набор функций для поддержки объекта XmlReader, созданного методом Create.

XmlResolver

Разрешает внешние ресурсы XML, названные универсальным идентификатором ресурса (URI).

XmlSecureResolver

Помогает защитить другую реализацию XmlResolver, оборачивая объект XmlResolver и ограничивая ресурсы, к которым имеет доступ базовый XmlResolver.

XmlSignificantWhitespace

Представляет пробел между разметкой в ​​узле смешанного содержимого или пробелом в области xml: space = ‘preserve’. Это также называется значительным пробелом.

XmlText

Представляет текстовое содержимое элемента или атрибута.

XmlTextReader

Представляет читателя, который обеспечивает быстрый, не кэшированный, прямой доступ к данным XML.

XmlTextWriter

Представляет средство записи, обеспечивающее быстрый, не кэшированный, прямой способ генерации потоков или файлов, содержащих данные XML, которые соответствуют W3C Extensible Markup Language (XML) 1.0 и пространствам имен в рекомендациях XML.

XmlUrlResolver

Разрешает внешние ресурсы XML, названные универсальным идентификатором ресурса (URI).

XmlWhitespace

Представляет пустое пространство в содержимом элемента.

XmlWriter

Представляет средство записи, обеспечивающее быстрое, не кэшированное, предназначенное только для пересылки средство создания потоков или файлов, содержащих данные XML.

XmlWriterSettings

Задает набор функций для поддержки объекта XmlWriter, созданного методом XmlWriter.Create.

API парсера XML

Двумя наиболее основными и широко используемыми API для XML-данных являются интерфейсы SAX и DOM.

  • Простой API для XML (SAX) — здесь вы регистрируете обратные вызовы для интересующих событий, а затем позволяете анализатору проходить через документ. Это полезно, когда ваши документы большие или у вас есть ограничения памяти, он анализирует файл, когда читает его с диска, и весь файл никогда не сохраняется в памяти.

  • API Document Object Model (DOM) — это рекомендация Консорциума World Wide Web, в которой весь файл считывается в память и сохраняется в иерархической (основанной на дереве) форме для представления всех возможностей документа XML.

Простой API для XML (SAX) — здесь вы регистрируете обратные вызовы для интересующих событий, а затем позволяете анализатору проходить через документ. Это полезно, когда ваши документы большие или у вас есть ограничения памяти, он анализирует файл, когда читает его с диска, и весь файл никогда не сохраняется в памяти.

API Document Object Model (DOM) — это рекомендация Консорциума World Wide Web, в которой весь файл считывается в память и сохраняется в иерархической (основанной на дереве) форме для представления всех возможностей документа XML.

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

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

Для всех наших примеров XML-кода, давайте использовать простой XML-файл movies.xml в качестве входных данных —

<?xml version = "1.0"?>

<collection shelf = "New Arrivals">
   <movie title = "Enemy Behind">
      <type>War, Thriller</type>
      <format>DVD</format>
      <year>2003</year>
      <rating>PG</rating>
      <stars>10</stars>
      <description>Talk about a US-Japan war</description>
   </movie>

   <movie title = "Transformers">
      <type>Anime, Science Fiction</type>
      <format>DVD</format>
      <year>1989</year>
      <rating>R</rating>
      <stars>8</stars>
      <description>A schientific fiction</description>
   </movie>

   <movie title = "Trigun">
      <type>Anime, Action</type>
      <format>DVD</format>
      <episodes>4</episodes>
      <rating>PG</rating>
      <stars>10</stars>
      <description>Vash the Stampede!</description>
   </movie>

   <movie title = "Ishtar">
      <type>Comedy</type>
      <format>VHS</format>
      <rating>PG</rating>
      <stars>2</stars>
      <description>Viewable boredom</description>
   </movie>
</collection>

Разбор XML с помощью SAX API

В модели SAX вы используете классы XmlReader и XmlWriter для работы с данными XML.

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

Пример 1

Этот пример демонстрирует чтение XML-данных из файла movies.xml.

Сделайте следующие шаги —

  • Добавьте файл movies.xml в папку bin \ Debug вашего приложения.

  • Импортируйте пространство имен System.Xml в файле Form1.vb.

  • Добавьте метку в форму и измените ее текст на «Movies Galore».

  • Добавьте три списка и три кнопки, чтобы показать заголовок, тип и описание фильма из XML-файла.

  • Добавьте следующий код, используя окно редактора кода.

Добавьте файл movies.xml в папку bin \ Debug вашего приложения.

Импортируйте пространство имен System.Xml в файле Form1.vb.

Добавьте метку в форму и измените ее текст на «Movies Galore».

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

Добавьте следующий код, используя окно редактора кода.

Imports System.Xml
Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      ' Set the caption bar text of the form.   
      Me.Text = "tutorialspoint.com"
   End Sub
   
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      ListBox1().Items.Clear()
      Dim xr As XmlReader = XmlReader.Create("movies.xml")
      Do While xr.Read()
         If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "movie" Then
            ListBox1.Items.Add(xr.GetAttribute(0))
         End If
      Loop
   End Sub
   
   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
      ListBox2().Items.Clear()
      Dim xr As XmlReader = XmlReader.Create("movies.xml")
      Do While xr.Read()
         If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "type" Then
            ListBox2.Items.Add(xr.ReadElementString)
         Else
            xr.Read()
         End If
      Loop
   End Sub
   
   Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
      ListBox3().Items.Clear()
      Dim xr As XmlReader = XmlReader.Create("movies.xml")
      Do While xr.Read()
         If xr.NodeType = XmlNodeType.Element AndAlso xr.Name = "description" Then
            ListBox3.Items.Add(xr.ReadElementString)
         Else
            xr.Read()
         End If
      Loop
   End Sub
End Class

Выполните и запустите приведенный выше код с помощью кнопки « Пуск» , доступной на панели инструментов Microsoft Visual Studio. Нажатие на кнопки отобразит название, тип и описание фильмов из файла.

Пример 1 обработки VB.Net XML

Класс XmlWriter используется для записи данных XML в поток, файл или объект TextWriter. Он также работает только в прямом, не кэшированном виде.

Пример 2

Давайте создадим файл XML, добавив некоторые данные во время выполнения. Сделайте следующие шаги —

  • Добавьте элемент управления WebBrowser и элемент управления кнопки в форме.

  • Измените свойство «Текст» кнопки на «Показать файл авторов».

  • Добавьте следующий код в редактор кода.

Добавьте элемент управления WebBrowser и элемент управления кнопки в форме.

Измените свойство «Текст» кнопки на «Показать файл авторов».

Добавьте следующий код в редактор кода.

Imports System.Xml
Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      ' Set the caption bar text of the form.   
      Me.Text = "tutorialspoint.com"
   End Sub
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim xws As XmlWriterSettings = New XmlWriterSettings()
      xws.Indent = True
      xws.NewLineOnAttributes = True
      Dim xw As XmlWriter = XmlWriter.Create("authors.xml", xws)
      xw.WriteStartDocument()
      xw.WriteStartElement("Authors")
      xw.WriteStartElement("author")
      xw.WriteAttributeString("code", "1")
      xw.WriteElementString("fname", "Zara")
      xw.WriteElementString("lname", "Ali")
      xw.WriteEndElement()
      xw.WriteStartElement("author")
      xw.WriteAttributeString("code", "2")
      xw.WriteElementString("fname", "Priya")
      xw.WriteElementString("lname", "Sharma")
      xw.WriteEndElement()
      xw.WriteStartElement("author")
      xw.WriteAttributeString("code", "3")
      xw.WriteElementString("fname", "Anshuman")
      xw.WriteElementString("lname", "Mohan")
      xw.WriteEndElement()
      xw.WriteStartElement("author")
      xw.WriteAttributeString("code", "4")
      xw.WriteElementString("fname", "Bibhuti")
      xw.WriteElementString("lname", "Banerjee")
      xw.WriteEndElement()
      xw.WriteStartElement("author")
      xw.WriteAttributeString("code", "5")
      xw.WriteElementString("fname", "Riyan")
      xw.WriteElementString("lname", "Sengupta")
      xw.WriteEndElement()
      xw.WriteEndElement()
      xw.WriteEndDocument()
      xw.Flush()
      xw.Close()
      WebBrowser1.Url = New Uri(AppDomain.CurrentDomain.BaseDirectory + "authors.xml")
   End Sub
End Class
  • Выполните и запустите приведенный выше код с помощью кнопки « Пуск» , доступной на панели инструментов Microsoft Visual Studio. Если щелкнуть «Показать файл автора», в веб-браузере отобразится вновь созданный файлhors.xml.

Выполните и запустите приведенный выше код с помощью кнопки « Пуск» , доступной на панели инструментов Microsoft Visual Studio. Если щелкнуть «Показать файл автора», в веб-браузере отобразится вновь созданный файлhors.xml.

Пример 2 обработки VB.Net XML

Разбор XML с DOM API

Согласно объектной модели документа (DOM), документ XML состоит из узлов и атрибутов узлов. Класс XmlDocument используется для реализации синтаксического анализатора XML DOM .Net Framework. Это также позволяет вам изменять существующий XML-документ, вставляя, удаляя или обновляя данные в документе.

Ниже приведены некоторые из наиболее часто используемых методов класса XmlDocument.

Sr.No. Название и описание метода
1

AppendChild

Добавляет указанный узел в конец списка дочерних узлов этого узла.

2

CreateAttribute (String)

Создает XmlAttribute с указанным именем.

3

CreateComment

Создает XmlComment, содержащий указанные данные.

4

CreateDefaultAttribute

Создает атрибут по умолчанию с указанным префиксом, локальным именем и URI пространства имен.

5

CreateElement (String)

Создает элемент с указанным именем.

6

CreateNode (String, String, String)

Создает XmlNode с указанным типом узла, Name и NamespaceURI.

7

CreateNode (XmlNodeType, String, String)

Создает XmlNode с указанными XmlNodeType, Name и NamespaceURI.

8

CreateNode (XmlNodeType, String, String, String)

Создает XmlNode с указанным XmlNodeType, Prefix, Name и NamespaceURI.

9

CreateProcessingInstruction

Создает XmlProcessingInstruction с указанным именем и данными.

10

CreateSignificantWhitespace

Создает узел XmlSignificantWhitespace.

11

CreateTextNode

Создает XmlText с указанным текстом.

12

CreateWhitespace

Создает узел XmlWhitespace.

13

CreateXmlDeclaration

Создает узел XmlDeclaration с указанными значениями.

14

GetElementById

Получает XmlElement с указанным идентификатором.

15

GetElementsByTagName (String)

Возвращает XmlNodeList, содержащий список всех элементов-потомков, соответствующих указанному Имени.

16

GetElementsByTagName (String, String)

Возвращает XmlNodeList, содержащий список всех элементов-потомков, которые соответствуют указанным LocalName и NamespaceURI.

17

InsertAfter

Вставляет указанный узел сразу после указанного ссылочного узла.

18

InsertBefore

Вставляет указанный узел непосредственно перед указанным ссылочным узлом.

19

Нагрузка (поток)

Загружает XML-документ из указанного потока.

20

Load (String)

Загружает документ XML с указанного URL.

21

Нагрузка (ЧтениеТекст)

Загружает документ XML из указанного TextReader.

22

Нагрузка (XmlReader)

Загружает документ XML из указанного XmlReader.

23

LoadXml

Загружает документ XML из указанной строки.

24

PrependChild

Добавляет указанный узел в начало списка дочерних узлов для этого узла.

25

ReadNode

Создает объект XmlNode на основе информации в XmlReader. Считыватель должен быть расположен на узле или атрибуте.

26

Удалить все

Удаляет все дочерние узлы и / или атрибуты текущего узла.

27

RemoveChild

Удаляет указанный дочерний узел.

28

ReplaceChild

Заменяет дочерний узел oldChild на узел newChild.

29

Save (Stream)

Сохраняет XML-документ в указанном потоке.

30

Save (String)

Сохраняет документ XML в указанный файл.

31

Сохранить (TextWriter)

Сохраняет XML-документ в указанный TextWriter.

32

Save (XmlWriter)

Сохраняет документ XML в указанном XmlWriter.

AppendChild

Добавляет указанный узел в конец списка дочерних узлов этого узла.

CreateAttribute (String)

Создает XmlAttribute с указанным именем.

CreateComment

Создает XmlComment, содержащий указанные данные.

CreateDefaultAttribute

Создает атрибут по умолчанию с указанным префиксом, локальным именем и URI пространства имен.

CreateElement (String)

Создает элемент с указанным именем.

CreateNode (String, String, String)

Создает XmlNode с указанным типом узла, Name и NamespaceURI.

CreateNode (XmlNodeType, String, String)

Создает XmlNode с указанными XmlNodeType, Name и NamespaceURI.

CreateNode (XmlNodeType, String, String, String)

Создает XmlNode с указанным XmlNodeType, Prefix, Name и NamespaceURI.

CreateProcessingInstruction

Создает XmlProcessingInstruction с указанным именем и данными.

CreateSignificantWhitespace

Создает узел XmlSignificantWhitespace.

CreateTextNode

Создает XmlText с указанным текстом.

CreateWhitespace

Создает узел XmlWhitespace.

CreateXmlDeclaration

Создает узел XmlDeclaration с указанными значениями.

GetElementById

Получает XmlElement с указанным идентификатором.

GetElementsByTagName (String)

Возвращает XmlNodeList, содержащий список всех элементов-потомков, соответствующих указанному Имени.

GetElementsByTagName (String, String)

Возвращает XmlNodeList, содержащий список всех элементов-потомков, которые соответствуют указанным LocalName и NamespaceURI.

InsertAfter

Вставляет указанный узел сразу после указанного ссылочного узла.

InsertBefore

Вставляет указанный узел непосредственно перед указанным ссылочным узлом.

Нагрузка (поток)

Загружает XML-документ из указанного потока.

Load (String)

Загружает документ XML с указанного URL.

Нагрузка (ЧтениеТекст)

Загружает документ XML из указанного TextReader.

Нагрузка (XmlReader)

Загружает документ XML из указанного XmlReader.

LoadXml

Загружает документ XML из указанной строки.

PrependChild

Добавляет указанный узел в начало списка дочерних узлов для этого узла.

ReadNode

Создает объект XmlNode на основе информации в XmlReader. Считыватель должен быть расположен на узле или атрибуте.

Удалить все

Удаляет все дочерние узлы и / или атрибуты текущего узла.

RemoveChild

Удаляет указанный дочерний узел.

ReplaceChild

Заменяет дочерний узел oldChild на узел newChild.

Save (Stream)

Сохраняет XML-документ в указанном потоке.

Save (String)

Сохраняет документ XML в указанный файл.

Сохранить (TextWriter)

Сохраняет XML-документ в указанный TextWriter.

Save (XmlWriter)

Сохраняет документ XML в указанном XmlWriter.

Пример 3

В этом примере давайте вставим некоторые новые узлы в XML-документhors author.xml, а затем отобразим имена всех авторов в списке.

Сделайте следующие шаги —

Добавьте файлhors.xml в папку bin / Debug вашего приложения (он должен быть там, если вы попробовали последний пример)

Импортируйте пространство имен System.Xml

Добавьте поле со списком и элемент управления кнопки в форме и установите для свойства текста элемента управления кнопки значение Показать авторов.

Добавьте следующий код, используя редактор кода.

Выполните и запустите приведенный выше код с помощью кнопки « Пуск» , доступной на панели инструментов Microsoft Visual Studio. Нажатие на кнопку «Показать автора» отобразит имена всех авторов, включая того, который мы добавили во время выполнения.