Страница: 1 | 2 | 3 | 4 |
Вопрос: Vbnet.Ru
Добавлено: 08.05.07 23:52
Автор вопроса: D o c a l | Web-сайт:
Ответы
Всего ответов: 57
Номер ответа: 31
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #31
Добавлено: 09.05.07 21:30
Ура Ура Ура Ура Ура я ето зделал.Оно принимает даные я псих я здурел я ето зделал.)))))
Номер ответа: 32
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #32
Добавлено: 09.05.07 22:27
Да только кто нибудь скажите как роботать з етими xml.
Номер ответа: 33
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #33
Добавлено: 10.05.07 02:20
Ну как.. изучить модель MSXML
Заходишь в Projects->References
(в галимом перепедённом бейсике такой как стоит у меня Проект->Информация)
Подключаешь Microsoft XML (файл msxml.dll)
Берёшь где-то глобально в модуле...
dim xml as msxml.domdocument
открываешь xml документ (те данные что ты получил)
set xml = new msxml.domdocument
xml.loadxml(<те данные что ты получил>
Потом когда сильно хочеться получить какой-то нод xml данных делаешь
dim node as msxml.xmldomnode
Set node = xml.documentelement.selectsinglnode(<тот нод что хоч поулчить>
и содержимое нода будет в node.text
и так далее реализовываешь все функции для парсинга данных из xml по структурам...
Весь код выше врядли является правильным на 100%, т.к. писал я его отбалдны по памяти прямо здесь в окошке для ввода текста.
Думаю подробная документация по XML будет в MSDN'e...
Номер ответа: 34
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #34
Добавлено: 10.05.07 02:30
Спасиба
Номер ответа: 35
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #35
Добавлено: 10.05.07 06:10
Там XML очень большой, быстрее будет парсить его ручками, формируя таблицу ссылок для постов.
Номер ответа: 36
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #36
Добавлено: 10.05.07 08:41
У меня класс для работы с XML. Написан на основе класса от akartanis(пёс)akguild.com, но я туда добавил больше половины функций для работы с нодами по их индексу
Могу намылить. Мне нравится. Требует подключения Microsoft XML, version 2.0. Удобен тем, что с нодами можно работать наподобии файловой системы.
Если у кого есть класс лучше - делитесь
Public Function ReadNode(strQuery As String, Optional strDefault As String = "" As String
Public Function ReadNodeByIndex(strQuery As String, lngIndex As Long, Optional strDefault As String = "" As String
Public Function ReadNodeXML(strQuery As String) As String
Public Function ReadNodeXMLByIndex(strQuery As String, lngIndex As Long) As String
Public Property Get XML() As String
Public Function Save(strFileName As String)
Public Function ReadAttribute(strQuery As String, strName As String, Optional strDefault As String = "" As String
Public Function ReadAttributeByIndex(strQuery As String, strName As String, lngIndex As Long, Optional strDefault As String = "" As String
Public Function NodeCount(strQuery As String) As Long
Public Function DeleteNode(strQuery As String)
Public Function WriteNode(strQuery As String, Value As Variant)
Public Function WriteAttribute(strQuery As String, strName As String, Value As Variant)
Public Function WriteAttributeByIndex(strQuery As String, strName As String, Value As Variant, lngIndex As Long)
Неспорю, много чего нет. Класс под себя настраивал. Многое "почистил"
Номер ответа: 37
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #37
Добавлено: 10.05.07 09:10
ZagZag ето весь пример?Или ты на мылиш ище што-то?
Номер ответа: 38
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #38
Добавлено: 10.05.07 10:17
Это только названия функций
Естественно у меня есть их код
Номер ответа: 39
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #39
Добавлено: 10.05.07 10:21
Ладно. В принципе чего мылить-то. Я и тут выложу.
Этот класс по сути является оболочкой к MSXML.DOMDocument. Просто он удобнее на мой взгляд.
Достаточно написать в форме:
Dim cXML As New clsXML
И потом использовать cXML для работы.
Вот класс:
clsXML.cls
Option Explicit
Dim xDoc As MSXML.DOMDocument
Public Enum OpenXMLDoc
oxFile = 0
oxString = 1
End Enum
Public Function OpenXML(ByRef strSource As String, Optional oType As OpenXMLDoc = oxFile) As Boolean
Set xDoc = New MSXML.DOMDocument
Select Case oType
Case oxFile
OpenXML = xDoc.Load(strSource)
Case oxString
OpenXML = xDoc.loadXML(strSource)
End Select
End Function
Public Function ReadNode(strQuery As String, Optional strDefault As String = "" As String
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMNode
Set xNode = xDoc.documentElement.selectSingleNode(strQuery)
ReadNode = xNode.Text
Set xNode = Nothing
Exit Function
ErrHandle:
ReadNode = Null
Set xNode = Nothing
End Function
Public Function ReadNodeByIndex(strQuery As String, lngIndex As Long, Optional strDefault As String = "" As String
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMNode
Set xNode = xDoc.documentElement.selectNodes(strQuery).Item(lngIndex)
If xNode Is Nothing Then
ReadNodeByIndex = ""
Else
ReadNodeByIndex = xNode.Text
End If
Set xNode = Nothing
Exit Function
ErrHandle:
ReadNodeByIndex = Null
Set xNode = Nothing
End Function
Public Function ReadNodeXML(strQuery As String) As String
Dim xNode As MSXML.IXMLDOMNode
Set xNode = xDoc.documentElement.selectSingleNode(strQuery)
MsgBox xNode.childNodes
ReadNodeXML = xNode.XML
Set xNode = Nothing
End Function
Public Function ReadNodeXMLByIndex(strQuery As String, lngIndex As Long) As String
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMNode
Set xNode = xDoc.documentElement.selectNodes(strQuery).Item(lngIndex)
If xNode Is Nothing Then
ReadNodeXMLByIndex = ""
Else
ReadNodeXMLByIndex = xNode.XML
End If
Set xNode = Nothing
Exit Function
ErrHandle:
ReadNodeXMLByIndex = Null
Set xNode = Nothing
End Function
Public Property Get XML() As String
XML = xDoc.XML
End Property
Public Function Save(strFileName As String)
xDoc.Save strFileName
End Function
Public Function ReadAttribute(strQuery As String, strName As String, Optional strDefault As String = "" As String
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMElement
Set xNode = xDoc.documentElement.selectSingleNode(strQuery)
ReadAttribute = xNode.getAttribute(strName)
Set xNode = Nothing
Exit Function
ErrHandle:
ReadAttribute = strDefault
Set xNode = Nothing
End Function
Public Function ReadAttributeByIndex(strQuery As String, strName As String, lngIndex As Long, Optional strDefault As String = "" As String
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMElement
Set xNode = xDoc.documentElement.selectNodes(strQuery).Item(lngIndex)
ReadAttributeByIndex = xNode.getAttribute(strName)
Set xNode = Nothing
Exit Function
ErrHandle:
ReadAttributeByIndex = strDefault
Set xNode = Nothing
End Function
Public Function NodeCount(strQuery As String) As Long
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMNodeList
Set xNode = xDoc.documentElement.selectNodes(strQuery)
NodeCount = xNode.length
Set xNode = Nothing
Exit Function
ErrHandle:
NodeCount = -1
Set xNode = Nothing
End Function
Public Function DeleteNode(strQuery As String)
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMNode
Set xNode = xDoc.documentElement.selectSingleNode(strQuery)
xNode.parentNode.removeChild xNode
Set xNode = Nothing
Exit Function
ErrHandle:
Set xNode = Nothing
End Function
Public Function WriteNode(strQuery As String, Value As Variant)
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMNode
Set xNode = xDoc.documentElement.selectSingleNode(strQuery)
xNode.Text = Value
Set xNode = Nothing
Exit Function
ErrHandle:
Set xNode = Nothing
End Function
Public Function WriteAttribute(strQuery As String, strName As String, Value As Variant)
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMElement
Set xNode = xDoc.documentElement.selectSingleNode(strQuery)
xNode.setAttribute strName, Value
Set xNode = Nothing
Exit Function
ErrHandle:
Set xNode = Nothing
End Function
Public Function WriteAttributeByIndex(strQuery As String, strName As String, Value As Variant, lngIndex As Long)
On Error GoTo ErrHandle:
Dim xNode As MSXML.IXMLDOMElement
Set xNode = xDoc.documentElement.selectNodes(strQuery).Item(lngIndex)
xNode.setAttribute strName, Value
Set xNode = Nothing
Exit Function
ErrHandle:
Set xNode = Nothing
End Function
Номер ответа: 40
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #40
Добавлено: 10.05.07 10:40
Спасиба буду розбиратса
Номер ответа: 41
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #41
Добавлено: 10.05.07 14:22
формируя таблицу ссылок для постов.
Рапарсить ручками быстрее чем через XPath? На грани фантастики.
Номер ответа: 42
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #42
Добавлено: 10.05.07 14:23
Или ты не о сложности парсинга, а о производительности?
Номер ответа: 43
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #43
Добавлено: 10.05.07 16:10
О производительности. 100-метровый XML будет ощутимо тормозить, если полениться и заюзать какое-нибудь готовое универсальное решение.
Номер ответа: 44
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #44
Добавлено: 10.05.07 21:12
У нас в оффлайн клиенте в принципе похожее решение, такое как предлжил ZagZag.
Ручками парсить на вб6 - недумаю что будет намного быстрее, скорее медление... вб6 очень тормознуто со строками работает...
Можно применить с++/asm, тогда да.. XPath можно засунуть за поясь...
Номер ответа: 45
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #45
Добавлено: 10.05.07 21:37
Хочу на XPath поглядеть, что за зверь? Оболочка для XML? Киньте кто-нить. zagzag[зверь]xaker.ru