1

Тема: Dom деревья в lotus

NotesDOMDocumentNode - вершина Dom дерева

NotesDOMNodeList - все узлы
NotesDOMNode - узел в дереве


NotesDOMEIementNode - элемент
NotesDOMAttributeNode - атрибут в NotesDOMEIementNode.


Узлу можно присвоить элемент.
Пример:

    Dim tmpDocNode As  NotesDOMElementNode
    Dim tmpDocNode2 As NotesDOMNode
....
    Set tmpDocNode2 = tmpDocNode

Поделиться

2

Re: Dom деревья в lotus

Пример прямого прохода по структуре типа:

<html xmlns="http://_.w3.org/1999/xhtml" encoding="UTF-8">
<head><title>Лог</title></head>
<body>
<table>
<thead>
<tr><th axis="str">Время</th><th>Событие</th></tr>
</thead>
<tbody>
<tr xmlns="" Type="Giving" File="1201692011534.xml" ID="38018" Number="01-01-09/487" Name="Тестовый документ 4 - 20 сент." Addressee="2"><td>2016-09-20 11:08:49</td><td>Ваш файл &lt;&lt;1201692011534.xml&gt;&gt; с заголовком: &lt;&lt;Тестовый документ в Правительство 4 - 20 сент.&gt;&gt; и регистрационным номером &lt;&lt;01-01-09/487&gt;&gt; направленный на &lt;&lt;&gt;&gt; был зарегестрирован под номером &lt;&lt;38018&gt;&gt;</td></tr>
<tr xmlns="" Type="Giving" File="a4aortfcp8.xml" ID="465018" Number="01-01-37/12345" Name="12344545" Addressee="99"><td>2016-09-26 09:53:21</td><td>Ваш файл &lt;&lt;a4aortfcp8.xml&gt;&gt; с заголовком: &lt;&lt;12344545&gt;&gt; и регистрационным номером &lt;&lt;01-01-37/12345&gt;&gt; направленный на &lt;&lt;test&gt;&gt; был зарегестрирован под номером &lt;&lt;465018&gt;&gt;</td></tr>
</tbody>
</table>
</body>
</html>

Лотус скрипт:

Dim domParser As NotesDOMParser
    Dim docNode As NotesDOMDocumentNode
    Dim tmpDocNode As  NotesDOMElementNode
    Dim tmpDocNode2 As NotesDOMNode
    Dim DOMNodeList As NotesDOMNodeList
    Dim child As NotesDOMNode
    Dim a As NotesDOMAttributeNode
    Dim attrs As notesdomnamednodemap
    Dim numChildNodes As Integer


Call strm.Open(localFile$, "UTF-8" )
Set domParser=session.CreateDOMParser(strm, outputStream)
Print "Старт domParser.Process"
domParser.Process
                    
Set docNode = domParser.Document   ' NotesDOMDocumentNode  (вершина дерева)
Set DOMNodeList = docNode.GetElementsByTagName("tbody")
Print  "записей:" &  Cstr(DOMNodeList.NumberOfEntries)
Set tmpDocNode = DOMNodeList.GetItem(1)   'tbody
Print tmpDocNode.TagName      '  NotesDOMElementNode - элемент    tbody
Set tmpDocNode2 = tmpDocNode
numChildNodes = tmpDocNode2.NumberOfChildNodes
Print "numChildNodes:"  &  Cstr(numChildNodes)

ПРЯМОЙ ПРОХОД ПО ВСЕМ TR

Set child =  tmpDocNode2.FirstChild    'NotesDOMNode - узел  tr
While numChildNodes > 0
                        Print    "узел child = "  & child.NodeName
                        Set attrs = child.Attributes
                        Print "атрибутов:"  & attrs.NumberOfEntries
                        For j = 1 To attrs.NumberOfEntries
                            Set a = attrs.GetItem( j )   '  NotesDOMAttributeNode - атрибут
                            Print    "атрибут a:"  &     a.AttributeName  & ". значение:" & a.AttributeValue
                        Next
                        Set child = child.NextSibling 
                        numChildNodes = numChildNodes - 1 
                    Wend

Поделиться

3

Re: Dom деревья в lotus

ОБРАТНЫЙ ПРОХОД ПО ВСЕМ TR с проходом по всем дочерним TD. Так же получаем значения всех атрибутов TR.

  ' ОБРАТНЫЙ ПРОХОД ПО ВСЕМ TR
                    Set child =  tmpDocNode2.LastChild   'child - NotesDOMNode - узел  tr
                    'Print    "child.NodeName:"  &  child.NodeName   ' tr
                    
                    
                    For x = numChildNodes To 1 Step -1 ' 
                        Print    "узел child = "  & child.NodeName
                        
                        tdNodes = child.NumberOfChildNodes  ' TD
                        Print "tdNodes:" & Cstr(tdNodes)
                        Set tdDOMNoda = child.FirstChild
                        While tdNodes > 0
                            Print "td:" & tdDOMNoda.NodeName & tdDOMNoda.FirstChild.NodeValue
                            Set tdDOMNoda = tdDOMNoda.NextSibling
                            tdNodes = tdNodes-1
                        Wend
                        
                        Set attrs = child.Attributes
                        Print "атрибутов:"  & attrs.NumberOfEntries
                        For j = 1 To attrs.NumberOfEntries
                            Set a = attrs.GetItem( j )   '  NotesDOMAttributeNode - атрибут
                            Print    "атрибут:"  &     a.AttributeName  & ". значение:" & a.AttributeValue
                        Next
                        
                        Set child = child.PreviousSibling    
                    Next

Поделиться