Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Парсинг текстовой строки / 16 сообщений из 16, страница 1 из 1
11.01.2013, 16:09
    #38106642
Frost_Imp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Комрады, приветствую!
Прошу помощи: есть строка вида
Код: plaintext
1.
{"error":0,"response":[{"count":29,"lost":0,"average":128,"positive":12,"negative":2}]}


Задача: либо сохранить в разные переменные значение каждого параметра (count, lost и т.д.) либо сразу раскидать эти значения по таблице.
Хотелось бы более изящный способ нежели комбинация MID и SEARCH, когда ищется ключевое слово, потом запятая после него, и уж потом выдергивается значение между ними.
_____________________
А что на самом деле хотел сказать "Frost_Imp" никто не знает, так как администрация форума попросила его быть вежливым.
...
Рейтинг: 0 / 0
11.01.2013, 16:12
    #38106649
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
вы уверены, чо вам это стоит делать на VB 6.0 ?
это же json используйте возможности javascript или С# (там есть готовые классы для обработки)
...
Рейтинг: 0 / 0
11.01.2013, 16:17
    #38106662
Frost_Imp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Konst_One, к сожалению, я ограничен лишь vb6.
А если этот текст будет не json, а, например, xml?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
"<?xml version=""1.0""?>
<values>
  <error>0</error>
  <response>
    <response>
      <count>29</count>
      <lost>0</lost>
      <average>128</average>
      <positive>12</positive>
      <negative>2</negative>
    </response>
  </response>
</values>
"


но обрабатывать все равно средствами vb - это упростит дело?
...
Рейтинг: 0 / 0
11.01.2013, 16:18
    #38106668
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
зачем парсить xml ? для этого же есть специальные средства XMLDocument
...
Рейтинг: 0 / 0
11.01.2013, 16:20
    #38106676
Frost_Imp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Konst_One, я с ними не знаком. Буду признателен, если подскажете
...
Рейтинг: 0 / 0
11.01.2013, 16:27
    #38106697
Frost_Imp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Нет, XMLDocument не очень подходит, так как у меня нет отдельного xml-файла, есть текстовая строка в ячейке, которую нужно обработать.
Поэтому проще вернуться к вопросу парсинга. Либо первого, либо второго варианта.
...
Рейтинг: 0 / 0
11.01.2013, 16:28
    #38106704
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Вообще из json можно сделать js-объект с помощью Sript Control. Но если можно получать xml, то лучше его.
Буду признателен, если подскажетеБиблиотека называется Microsoft XML.
...
Рейтинг: 0 / 0
11.01.2013, 16:29
    #38106707
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Frost_ImpНет, XMLDocument не очень подходит, так как у меня нет отдельного xml-файла, есть текстовая строка в ячейке, которую нужно обработать.Он принимает строку.
...
Рейтинг: 0 / 0
11.01.2013, 16:31
    #38106712
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
подключите reference Microsoft XML
http://www.informit.com/articles/article.aspx?p=31360&seqNum=4
...
Рейтинг: 0 / 0
11.01.2013, 16:35
    #38106724
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
вот тут получше написано

http://msdn.microsoft.com/en-us/library/aa468547.aspx
...
Рейтинг: 0 / 0
11.01.2013, 16:40
    #38106733
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
для загрузки из строки юзайте LoadXML()

простенький гайд с тестовой программкой
http://www.quepublishing.com/articles/article.aspx?p=25084&seqNum=2
...
Рейтинг: 0 / 0
11.01.2013, 16:45
    #38106742
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
+ вот тут очень неплохое описалово по MSXML2.DOMDocument
http://www.script-coding.com/XMLDOMscripts.html
...
Рейтинг: 0 / 0
11.01.2013, 16:55
    #38106770
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Const strXML = _
"<?xml version=""1.0""?> " & _
"<values> " & _
"  <error>0</error> " & _
"  <response> " & _
"    <response> " & _
"      <count>29</count> " & _
"      <lost>0</lost> " & _
"      <average>128</average> " & _
"      <positive>12</positive> " & _
"      <negative>2</negative> " & _
"    </response> " & _
"  </response> " & _
"</values>"

Sub testt()
    Dim xmlParser As Object 'MSXML2.DOMDocument
    Dim xmlNode As Object 'MSXML2.IXMLDOMNode
    Dim xmlNodeList As Object 'MSXML2.IXMLDOMNodeList
    Dim xml_path As String
    '
    Set xmlParser = CreateObject("Msxml2.DOMDocument")
    If Not xmlParser.loadXML(strXML) Then
        MsgBox "Ахтунг !"
        Exit Sub
    End If
    '
    xml_path = "/values/response/response/*"
    Set xmlNodeList = xmlParser.documentElement.selectNodes(xml_path)
    For Each xmlNode In xmlNodeList
        Debug.Print xmlNode.nodeName, xmlNode.Text
    Next
    Set xmlParser = Nothing
End Sub


Код: vbnet
1.
2.
3.
4.
5.
6.
testt
count         29
lost          0
average       128
positive      12
negative      2
...
Рейтинг: 0 / 0
11.01.2013, 19:39
    #38106989
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Для регулярных выражений это очень простая задача:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub bb()
Dim s$, x
s = "{""error"":0,""response"":[{""count"":29,""lost"":0,""average"":128,""positive"":12,""negative"":2}]}"
Debug.Print s
With CreateObject("vbscript.regexp")
    .Pattern = """([a-z]+)"":(\d+)"
    .Global = True
    .IgnoreCase = True
    For Each x In .Execute(s)
        Debug.Print x.submatches(0), x.submatches(1)
    Next
End With
End Sub
...
Рейтинг: 0 / 0
15.01.2013, 22:27
    #38111511
Frost_Imp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
qwerty112, спасибо огромное! Ваш код решил мою задачу!
...
Рейтинг: 0 / 0
15.01.2013, 22:28
    #38111513
Frost_Imp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг текстовой строки
Казанский, благодарю! Завтра попробую в действии
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Парсинг текстовой строки / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]