На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> Сохранение/чтение настроек в XML , работа с xml в VB6
    В нашем FAQ есть примеры загрузки и сохранения настроек посредством Get/SaveSetting и Get/WritePrivateProfileString, но нет посредством xml-парсера. Решил исправить это недоразумение, набросал короткий, но, по-моему, достаточно понятный и подробный пример

    Процедура сохранения
    ExpandedWrap disabled
      Private Sub SaveSettingsToXML()
          Dim objXMLDoc As New DOMDocument
          Dim objRootNode As IXMLDOMNode, objCurrentNode As IXMLDOMNode
          
          'Создаем корневой узел
          Set objRootNode = objXMLDoc.createNode(NODE_ELEMENT, "settings", "")
          Call objXMLDoc.appendChild(objRootNode)
       
          If Me.WindowState = vbNormal Then
              'Создаем узел, содержащий размеры формы
              Set objCurrentNode = objXMLDoc.createNode(NODE_ELEMENT, "form_size", "")
          
              'И задаем ему в качестве аттрибутов размеры
              objCurrentNode.Attributes.setNamedItem(objXMLDoc.createAttribute("left")).Text = Str$(Me.Left)
              objCurrentNode.Attributes.setNamedItem(objXMLDoc.createAttribute("top")).Text = Str$(Me.Top)
              objCurrentNode.Attributes.setNamedItem(objXMLDoc.createAttribute("width")).Text = Str$(Me.Width)
              objCurrentNode.Attributes.setNamedItem(objXMLDoc.createAttribute("height")).Text = Str$(Me.Height)
          
              Call InsertWhiteSpace(objRootNode, vbCrLf + vbTab)
              Call objRootNode.appendChild(objCurrentNode)
              Call InsertWhiteSpace(objRootNode, vbCrLf + vbTab)
          End If
       
          'Создаем узел, содержащий текст из нашего текстового поля
          Set objCurrentNode = objXMLDoc.createNode(NODE_ELEMENT, "text", "")
          objCurrentNode.Attributes.setNamedItem(objXMLDoc.createAttribute("text_length")).Text = Str$(Len(Text1.Text))
          objCurrentNode.Text = Text1.Text
          
          Call objRootNode.appendChild(objCurrentNode)
          Call InsertWhiteSpace(objRootNode)
          
          Call objXMLDoc.save(XML_FILE)
      End Sub


    Процедура загрузки
    ExpandedWrap disabled
      Private Sub LoadSettingsFromXML()
          Dim objXMLDoc As New DOMDocument
          Dim objRootNode As IXMLDOMNode, objCurrentNode As IXMLDOMNode
          
          objXMLDoc.async = False
          objXMLDoc.validateOnParse = False
          If Not objXMLDoc.Load(XML_FILE) Then
              Err.Raise objXMLDoc.parseError.errorCode, , objXMLDoc.parseError.reason
          End If
       
          Set objRootNode = objXMLDoc.selectSingleNode("settings")
          'Выбираем узел с размерами и читаем его аттрибуты
          Set objCurrentNode = objRootNode.selectSingleNode("form_size")
          With Me
              .Left = Val(objCurrentNode.Attributes.getNamedItem("left").Text)
              .Top = Val(objCurrentNode.Attributes.getNamedItem("top").Text)
              .Width = Val(objCurrentNode.Attributes.getNamedItem("width").Text)
              .Height = Val(objCurrentNode.Attributes.getNamedItem("height").Text)
          End With
          
          'Выбираем узел с текстом и читаем его значение
          Text1.Text = Replace(objRootNode.selectSingleNode("text").Text, vbLf, vbCrLf)
      End Sub


    Для начала этого должно быть достаточно. У парсера MSXML еще есть целый ряд полезных классов, как, например, IXMLDOMNodeList -- позволяет последовательно (или в желаемом порядке) читать дочерние узлы документа или другого узла. Полезно при загрузке множества одинаковых узлов, как, например, в списках воспроизведения. За подробностями советую пойти сюда: http://msdn.microsoft.com/en-us/library/ms760218.aspx

    Полный код в примере, в аттаче

    Добавлено
    Если что-то упустил, просьба поправить, внесу необходимые корректировки :)
    Прикреплённый файлПрикреплённый файлmsxml_example.7z.file (2.33 Кбайт, скачиваний: 437)
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0192 ]   [ 17 queries used ]   [ Generated: 24.04.24, 19:11 GMT ]