Рейтинг блогов

Работа с XML средствами Visual Basic .NET

дата добавления: 27 февраля 2007 / 12:11, просмотров: 17211, комментариев: 0
В последнее время мне много приходит вопросов на тему работы с XML и писать каждому отдельно ответы на этот вопрос мне надоело, посему пишу сразу для всех.
И так, в данном обзоре вы узнаете, как создать и прочитать XML средствами Visual Basic .NET.

Создание XML


Начнем, пожалуй, с простого примера:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038:
039:
040:
041:
042:
'создаем MemoryStream, в который будем писать XML
Dim myMemoryStream As New IO.MemoryStream
'создаем XmlTextWriter, указываем объект – myMemoryStream,
'в который будем писать XML, и кодировку windows-1251
Dim myXml As New System.Xml.XmlTextWriter(myMemoryStream, _
System.Text.Encoding.GetEncoding(1251))


'создаем XML
myXml.WriteStartDocument()
'устанавливаем параметры форматирования
'xml-документа
'в данном случае –
'System.Xml.Formatting.Indented - форматирует отступы
'в дочерних элементах в соответствии с параметрами
'настройки Indentation и IndentChar
myXml.Formatting = System.Xml.Formatting.Indented
'длина отступа
myXml.Indentation = 2


'создаем элемент <test>
myXml.WriteStartElement("test")

'создаем элемент <item>
myXml.WriteStartElement("item")
'записываем строку
myXml.WriteString("привет, это тест")
'закрываем элемент </item>
myXml.WriteEndElement()


'создаем элемент <data>
myXml.WriteStartElement("data")
'записываем параметры
myXml.WriteAttributeString("name", "Фамилия Имя")
myXml.WriteAttributeString("birthday", "27.02.2007")
'закрываем элемент </date>
myXml.WriteEndElement()


'создаем элемент </test>
myXml.WriteEndElement()


'заносим данные в myMemoryStream
myXml.Flush()

В результате выполнения данного кода можно получить примерно такой XML-файл:

 

<?xml version="1.0" encoding="window-1251" ?>
<test>
  <item>привет, это тест</item>
  <data name="Фамилия Имя" birthday="27.02.2007" />
</test>


В данном примере XML записывается в MemoryStream, однако, вместо MemoryStream можно использовать любой другой Stream, например FileStream, либо еще проще, записывать данные сразу в файл, для этого просто вместо myMemoryStream в пятой строке укажите путь к файлу:

005:
006:
Dim myXml As New System.Xml.XmlTextWriter("C:myxml.xml", _
System.Text.Encoding.GetEncoding(1251))


Чтение
XML


Читать XML также легко, как и создавать, посему начну с примера:

001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
Dim myXml As New System.Xml.XPath.XPathDocument(myMemoryStream)
Dim sItem As String = ""
'читаем значение элемента item
sItem = _
yXml.CreateNavigator.SelectSingleNode("/test/item").Value
Dim sName As String = ""
Dim sBirthday As String = ""
'читаем значение name элемента data
sName = _
myXml.CreateNavigator.SelectSingleNode("/test/data/@name").Value
'читаем значение birthday элемента data
sName = _
myXml.CreateNavigator.SelectSingleNode("/test/data/@birthday").Value

В данном случае, вместо myMemoryStream в первой строке можно указать непосредственно путь к XML-файлу.
Метод SelectSingleNode получает значение первого элемента указанного в XPath. Если вызвать этот метод еще раз, то он возвратит значение следующего элемента, и т.д.


Вот собственно и все, если у вас возникнут вопросы, вы всегда можете задать их на форуме http://kbyte.ru/forum/

Удачи!

Комментарии (всего: 0)

Добавить комментарий rss

В этой записи пока еще нет комментариев...

Добавить комментарий

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учётная запись на этом сайте, пройдите процудуру авторизации.
В противном случае, зарегистрируйтесь на сайте.