Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Vbnet.Ru Добавлено: 08.05.07 23:52  

Автор вопроса:  D o c a l  | Web-сайт: www.doc-source.pp.net.ua/ | ICQ: 408802757 

Ответить

  Ответы Всего ответов: 57  

Номер ответа: 31
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #31
Добавлено: 09.05.07 21:30
Ура Ура Ура Ура Ура я ето зделал.Оно принимает даные я псих я здурел я ето зделал.:))))))

Ответить

Номер ответа: 32
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #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-сайт: www.doc-source.pp.net.ua/
 Профиль | | #34
Добавлено: 10.05.07 02:30
Спасиба

Ответить

Номер ответа: 35
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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 OpenXML(ByRef strSource As String, Optional oType As OpenXMLDoc = oxFile) As Boolean
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-сайт: www.doc-source.pp.net.ua/
 Профиль | | #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
'Автор: akartanis@akguild.com, zagzag@xaker.ru
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-сайт: www.doc-source.pp.net.ua/
 Профиль | | #40
Добавлено: 10.05.07 10:40
Спасиба буду розбиратса

Ответить

Номер ответа: 41
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #41
Добавлено: 10.05.07 14:22
Там XML очень большой, быстрее будет парсить его ручками,
формируя таблицу ссылок для постов.

Рапарсить ручками быстрее чем через XPath? На грани фантастики.

Ответить

Номер ответа: 42
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #42
Добавлено: 10.05.07 14:23
Или ты не о сложности парсинга, а о производительности?

Ответить

Номер ответа: 43
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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

Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам