Расширяемый язык разметки (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. Нажатие на кнопки отобразит название, тип и описание фильмов из файла.
Класс 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.
Разбор 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. Нажатие на кнопку «Показать автора» отобразит имена всех авторов, включая того, который мы добавили во время выполнения.