Страница: 1 |
Страница: 1 |
Вопрос: xml
Добавлено: 06.10.05 22:09
Автор вопроса: Neco | Web-сайт:
В своё время столкнувшись с sql, я поразился простоте, с которой можно было работать с запросами, от которой попахивало гениальностью создателей.
От xml (хотя это, конечно, вещи разных категорий) ничем таким не пахнет.
Чтобы прочитать файл с элементарной структурой мне пришлось ромадить такой код:
Dim reader As New Xml.XmlTextReader(Application.StartupPath + "\myXML.xml")
reader.WhitespaceHandling = Xml.WhitespaceHandling.None
While reader.Read()
'Debug.WriteLine(reader.Value + " ---- " + reader.Name + " ++++ " + reader.NodeType.ToString)
If reader.NodeType = Xml.XmlNodeType.Element Then
If reader.Name = "record" Then
If reader.Read Then
If reader.Name = "name" Then
If reader.Read Then
Debug.WriteLine(reader.Value)
End If
End If
End If
If reader.Read Then
If reader.Name = "hours" Then
If reader.Read Then
Debug.WriteLine(reader.Value)
End If
End If
End If
If reader.Read Then
If reader.Name = "description" Then
If reader.Read Then
Debug.WriteLine(reader.Value)
End If
End If
End If
End If
End If
End While
Нервы сдали - отлаживать его я уже не стал.
Я-то думал счас создам структуру по форме похожую на листья моего дерева и всё само-собой произойдёт, а тут хрень какая-то.
ПОЖАЛУЙСТА!
Не дайте мне разочароваться - киньте кто-нить хорошей инфой или разъясните сами базу xml - в чём прикол, вообще?
К примеру, что надо сделать, чтобы считать этот файл:
<?xml version="1.0" standalone="yes"?>
<data>
<record>
<name>Dan</name>
<hours>5</hours>
<description>First job</description>
</record>
<record>
<name>Jill</name>
<hours>3</hours>
<description>Second job</description>
</record>
<record>
<name>Neco</name>
<hours>8</hours>
<description>chagala</description>
</record>
<record>
<name>gnm</name>
<hours>ncvjb</hours>
<description>cvbnvbn</description>
</record>
</data>
в массив таких переменных:
Private Structure tRecord
Public name As String
Public hours As Integer
Public description As String
Public Shadows Function ToString() As String
Return "name:" + name + "; hours:" + hours.ToString + "; description:" + description
End Function
End Structure
?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #1
Добавлено: 07.10.05 11:00
вот тоже интересно, и вот что нашел:
http://www.devguru.com/Technologies/xmldom/quickref/xmldom_index.html
все описано и с примерами
Номер ответа: 2
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #2
Добавлено: 07.10.05 21:58
Тьма. 8)
Спасибо - банально "буду разбираться".
Номер ответа: 3
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #3
Добавлено: 11.10.05 10:39
Если кто разбирался: как правильно фильтровать nodeName с именем #text ?
Private MSXML As Object
Private XML_Root As Object
Private XML_Child As Object
Private XML_Attr As Object
Private XML_Attrs As Object
Private Sub Form_Load()
Set MSXML = CreateObject("MSXML2.DOMDocument"
MSXML.async = False
If MSXML.Load(App.Path & "\tst.xml" Then
Set XML_Root = MSXML.documentElement
RecurseXML XML_Root
End If
End Sub
Private Sub RecurseXML(obj_XML As Object)
For Each XML_Child In obj_XML.ChildNodes
If Left$(XML_Child.NodeName, 1) <> "#" Then ' #text ?
'ноды
List1.AddItem XML_Child.NodeName & " = " & XML_Child.nodeTypedValue
If XML_Child.hasChildNodes Then
RecurseXML XML_Child
End If
End If
Next
End Sub
Номер ответа: 4
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #4
Добавлено: 11.10.05 11:09
Я делал примерно так
Dim oNode1 As IXMLDOMNodeList
Set oNode1 = inNode.childNodes
...
...
If oNode1.Item(k).nodeType = NODE_TEXT Then ...
End if
...