Страница: 1 |
Вопрос: xml | Добавлено: 06.10.05 22:09 |
Автор вопроса: ![]() |
В своё время столкнувшись с 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 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 1249088 Вопросов: 10 Ответов: 304 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 07.10.05 11:00 |
вот тоже интересно, и вот что нашел:
http://www.devguru.com/Technologies/xmldom/quickref/xmldom_index.html все описано и с примерами |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 07.10.05 21:58 |
Тьма. 8)
Спасибо - банально "буду разбираться". |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 1249088 Вопросов: 10 Ответов: 304 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 11.10.05 10:39 |
Если кто разбирался: как правильно фильтровать nodeName с именем #text ?
Option Explicit
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" ![]() 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 Автор ответа: ![]() ![]() ICQ: 237822510 Вопросов: 28 Ответов: 1182 |
Профиль | Цитата | #4 | Добавлено: 11.10.05 11:09 |
Я делал примерно так
Private Sub FindChildNoteXML(inNode As IXMLDOMNode)
Dim oNode1 As IXMLDOMNodeList Set oNode1 = inNode.childNodes ... ... If oNode1.Item(k).nodeType = NODE_TEXT Then ... End if ... |
Страница: 1 |
|