LOTUSSCRIPT /COM/OLE のクラス


例:NotesDOMNodeList クラス
次の例は、NotesDOMNodeList を使用して一致したノードを検索する方法を示します。NotesDOMParser、NnotesSAXParser、NotesXSLTransformer の各オブジェクトの処理について詳しくは、「例: GetAttribute メソッド」を参照してください。

Sub getPersonDocs (node As NotesDOMElementNode)
 'node is the root element of the xml file
 
 Dim documentList As NotesDOMNodeList
 Dim nDocument As Integer  'number of <document> elements
 Dim i As Integer          'counter for documentList
 Dim child As NotesDOMNode
 Dim eNode As NotesDOMElementNode
 Dim n As Integer          'number of attributes
 
 If node.IsNull Then Exit Sub
 
 Set documentList = node.GetElementsByTagName ("document")
 nDocument = documentList.NumberOfEntries
 If nDocument = 0 Then Exit Sub  'no document elements in file
 
REM Check the child nodes of the root element
 Set child = node.FirstChild
 For i = 1 To nDocument
   While Not child.NodeName = "document"
     Set child = child.NextSibling
   Wend
   
REM We found an element node named "document"
   If child.Attributes.NumberOfEntries > 0 Then
   
REM The node has attritubes
     Set eNode = child        'switch to element node
     For n = 1 To eNode.Attributes.NumberOfEntries
       If eNode.GetAttribute("form") = "Person" Then
   
REM The node has the right attribute name and value
         Call getData (eNode)
       End If
     Next
   End If
   
REM Look for another Person document
   Set child = child.NextSibling
 Next
 
End Sub

Sub getData (node As Notesdomelementnode)
 'node is an element named "document"
 
 Dim itemList As NotesDOMNodeList
 Dim nItem As Integer      'number of <item> elements
 Dim i As Integer          'counter for itemList
 Dim child As NotesDOMNode
 Dim eNode As Notesdomelementnode
 Dim n As Integer          'number of attributes
 
 If node.IsNull Then Exit Sub
 
 Set itemList = node.GetElementsByTagName ("item")
 nItem = itemList.NumberOfEntries
 If nItem = 0 Then Exit Sub    'no item elements in node
 
REM Check the child nodes of this element
 Set child = node.FirstChild
 For i = 1 To nItem
   While Not child.NodeName = "item"
     Set child = child.NextSibling
   Wend
   
REM We found an element node named "item"
   If child.Attributes.NumberOfEntries > 0 Then
   
REM The node has attritubes
     Set eNode = child      'switch to element node
     For n = 1 To eNode.Attributes.NumberOfEntries
   
REM Look for an attribute named "name"
REM Only one of the following matches will be found for this node
   
       If eNode.GetAttribute("name") = "FirstName" Then
         REM We found a matching attribute value
         domParser.Output (NL)
         Call writeData (eNode)
         n = eNode.Attributes.NumberOfEntries  'done with this node
       End If
       
       If eNode.GetAttribute("name") = "LastName" Then
         REM We found a matching attribute value
         domParser.Output (" ")
         Call writeData (eNode)
         domParser.Output (NL)
         n = eNode.Attributes.NumberOfEntries  'done with this node
       End If
       
       If eNode.GetAttribute("name") = "OfficePhoneNumber" Then
         REM We found a matching attribute value
         domParser.Output (" ")
         Call writeData (eNode)
         domParser.Output (NL)
         n = eNode.Attributes.NumberOfEntries  'done with this node
       End If
       
     Next    'continue searching for a matching attribute
   End If
   
REM Look for another matching item
   Set child = child.Nextsibling
 Next
 
End Sub

関連項目