Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML в TreeView, конвертировать одно в другое 
:(
    Опции темы
Iww
Дата 23.1.2009, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



Что должна делать программа: читать XML файл и записывать его в объект TreeView... 
C первой частью вроде всё нормально, но вот непонимаю как записать каждую группу в отдельную ветку в TreeView, предостовляю код:

Код


Private m_hwndTV As Long



Private Sub Command1_Click()
     Dim objXML As MSXML2.DOMDocument
     Dim strXML As String
     Dim x As String
     Set objXML = New MSXML2.DOMDocument
     objXML.Load ("Путь к файлу")
     
     Open "Путь к фалу" For Input As 1
     Line Input #1, x
     x = Mid(x, 2, Len(x) - 2)
     Text2.Text = x
  
         For Each objSub In objXML.selectNodes("//" & x)
             Text1.Text = objSub.xml
         Next
         
     Dim i As Integer
     Dim nod As Node
     
       With TreeView1
         .HideSelection = False
         .Indentation = 10 * Screen.TwipsPerPixelX
         .LabelEdit = tvwManual
         .LineStyle = tvwRootLines
         m_hwndTV = .hWnd
     End With


  Set objElem = objXML.selectSingleNode("//" & x)
  
    For Each objSub In objElem.childNodes
    
      Set nod = TreeView1.Nodes.Add(, , , "имя родителя, которое я не знаю как найти")
      Call AddChildrenNodes(nod.Index, 1, "имя ребёнка, которое я не знаю как найти")
      Call SetNodeButton(nod, True)
      nod.Expanded = True
    Next
    TreeView1.Nodes(1).Selected = True
    
Close #1
End Sub



Private Sub AddChildrenNodes(iParent As Integer, nNodes As Integer, name As String)
  Dim nodeChild  As Node
  Dim i As Integer
  
  For i = 1 To nNodes
    Set nodeChild = TreeView1.Nodes.Add(iParent, tvwChild, , name & i)
    Call SetNodeButton(nodeChild, False)
  Next

End Sub

Private Function SetNodeButton(nod As Node, fAddButton As Boolean) As Boolean
  Dim hItem As Long
  
  hItem = GetTVItemFromNode(m_hwndTV, nod)
  If hItem Then
    SetNodeButton = SetTVItemButton(m_hwndTV, hItem, fAddButton)
  End If

End Function




Спасибо заранее.
PM MAIL   Вверх
Akina
Дата 25.1.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Iww @  24.1.2009,  00:57 Найти цитируемый пост)
имя родителя, которое я не знаю как найти

Имена ты или даёшь сам (скажем тривиальный счётчис), или они у тебя содержатся в самом XML (не рекомендую). А раз ты их сам даёшь - ты всеих знаешь.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Iww
Дата 26.1.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



Цитата(Akina @ 25.1.2009,  21:34)
...или они у тебя содержатся в самом XML (не рекомендую)


Они как раз-то в XML и содержатся... вся идея программы построена на том чтобы считывать данные с XML файла и строить из этого дерево... 
Есть ли какой-нибудь альтернативный способ считывать данные с *.xml файлов?? 
PM MAIL   Вверх
Akina
Дата 26.1.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Iww @  26.1.2009,  18:41 Найти цитируемый пост)
Они как раз-то в XML и содержатся... вся идея программы построена на том чтобы считывать данные с XML файла и строить из этого дерево... 

Ты не понял. Я к тому, что использовать имена XML-данных в качестве идентификаторов узлов нельзя - хотя бы из-за проблемы дублирования.

Цитата(Iww @  26.1.2009,  18:41 Найти цитируемый пост)
Есть ли какой-нибудь альтернативный способ считывать данные с *.xml файлов?? 

 smile оно тебе зачем?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Iww
Дата 26.1.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.4.2008

Репутация: нет
Всего: нет



Цитата(Akina @  26.1.2009,  17:55 Найти цитируемый пост)
Ты не понял. Я к тому, что использовать имена XML-данных в качестве идентификаторов узлов нельзя - хотя бы из-за проблемы дублирования.

Дак должны же быть какие-нибудь функции которые считывают каждую группу xml файла отдельно.

Цитата(Akina @  26.1.2009,  17:55 Найти цитируемый пост)
  оно тебе зачем? 

непонял вопроса... А как иначе я буду дерево строить ?

PM MAIL   Вверх
Akina
Дата 26.1.2009, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Iww @  26.1.2009,  22:48 Найти цитируемый пост)
должны же быть какие-нибудь функции которые считывают каждую группу xml файла отдельно.

Цитата

Installing Microsoft® Internet Explorer 5.0 and later on the server installs the msxml.dll, which contains all the components of the XML engine, including the Microsoft XML Parser (MSXML), the Extensible Stylesheet Language (XSL) processor, schema support, and so on.

Instantiate the XML control the way you would any other control on the server. For example, from an Active Server Pages (ASP) page you would use code like the following.

Код

var xObj = Server.CreateObject("msxml2.DOMDocument");

см. также, например, Q271621.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0802 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.