Click to See Complete Forum and Search --> : Finding right nodes with VB


johrog
September 24th, 2003, 05:00 AM
i am sjecking nodes in an XML document using IXMLDOMNode.
When i hit a node named "item" i fetch the metadata.
In this case i am dealing with folder structures. So when i find a folder, i want to reach the files in that folder. (But i can't!!)
xml look like this:
- <item identifier="FOLDER_537" structure="hierarchical">
- <title>
- <![CDATA[ Testsynk
]]>
</title>
- <item identifier="FILE_2511" identifierref="2511">
- <title>
- <![CDATA[ word123fil
]]>
</title>
I only get the name of folder, and it will not find the file.

Anyone have a good answer for me?
PS: i tried to change the root point to the new folder.

has it anything to do with "item" in both nodes?

erwin_78
September 25th, 2003, 06:55 AM
well first of all, your xml is well-formed, but not valid.
Repeating nodes should be all in one container (parent node). In your case 2 different nodes (item and title) are repeating in the same container.

something like this is valid:
Folders
- Folder
- * Item
- * Title
- Folder
- * Item
- * Title

Can you explane a bit more which values are the folder-value (identifier?) is and file-value (identifierref? or structure?)?

btw, are you sure you're searching for every match and not a single one (select nodes and not select node)?

johrog
September 25th, 2003, 07:32 AM
Here you have the version of xml which i load:
It is shortly explained:
*file
*file
*file
*Folder
**File
**Folder
***File
*Folder

And so on!

Problem is how to access the files below folder.
at the buttom ow the page i will put VB code.

- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:technical>
<imsmd:size>10355840</imsmd:size>
</imsmd:technical>
</imsmd:record>
</metadata>
- <organizations default="ROOT">
- <organization identifier="ROOT" structure="hierarchical">
+ <title>
- <![CDATA[ SYS:USER
]]>
</title>
- <item identifier="FOLDER_4" structure="hierarchical">
+ <title>
- <![CDATA[ My Folder
]]>
</title>
+ <item identifier="FILE_7" identifierref="7">
+ <title>
- <![CDATA[ new fil
]]>
</title>
- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:lifecycle>
- <imsmd:version>
<imsmd:langstring xml:lang="en" />
</imsmd:version>
- <imsmd:status>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">Fix_PDA_integration</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">OK</imsmd:langstring>
</imsmd:value>
</imsmd:status>
- <imsmd:contribute>
- <imsmd:role>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">LOMv1.0</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">Author</imsmd:langstring>
</imsmd:value>
</imsmd:role>
- <imsmd:centity>
- <imsmd:vcard>
- <![CDATA[
begin:vcard
fn:
ln:
end:
vcard

]]>
</imsmd:vcard>
</imsmd:centity>
- <imsmd:date>
<imsmd:datetime>2003-09-18T13:27:34</imsmd:datetime>
</imsmd:date>
</imsmd:contribute>
</imsmd:lifecycle>
</imsmd:record>
</metadata>
</item>
+ <item identifier="FILE_2510" identifierref="2510">
- <title>
- <![CDATA[ Excel0914.xls
]]>
</title>
- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:lifecycle>
- <imsmd:version>
<imsmd:langstring xml:lang="en" />
</imsmd:version>
- <imsmd:status>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">Fix_PDA_integration</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">OK</imsmd:langstring>
</imsmd:value>
</imsmd:status>
- <imsmd:contribute>
- <imsmd:role>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">LOMv1.0</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">Author</imsmd:langstring>
</imsmd:value>
</imsmd:role>
- <imsmd:centity>
- <imsmd:vcard>
- <![CDATA[
begin:vcard
fn:
ln:
end:vcard


]]>
</imsmd:vcard>
</imsmd:centity>
- <imsmd:date>
<imsmd:datetime>2003-09-18T13:27:34</imsmd:datetime>
</imsmd:date>
</imsmd:contribute>
</imsmd:lifecycle>
</imsmd:record>
</metadata>
</item>
+ <item identifier="FOLDER_537" structure="hierarchical">
- <title>
- <![CDATA[ Testsynk
]]>
</title>
- <item identifier="FILE_2511" identifierref="2511">
- <title>
- <![CDATA[ word123fil
]]>
</title>
- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:lifecycle>
- <imsmd:version>
<imsmd:langstring xml:lang="en" />
</imsmd:version>
- <imsmd:status>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">Fronter_PDA_integration</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">OK</imsmd:langstring>
</imsmd:value>
</imsmd:status>
- <imsmd:contribute>
- <imsmd:role>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">LOMv1.0</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">Author</imsmd:langstring>
</imsmd:value>
</imsmd:role>
- <imsmd:centity>
- <imsmd:vcard>
- <![CDATA[
begin:vcard
fn:
ln:
end:vcard


]]>
</imsmd:vcard>
</imsmd:centity>
- <imsmd:date>
<imsmd:datetime>2003-09-23T16:35:52</imsmd:datetime>
</imsmd:date>
</imsmd:contribute>
</imsmd:lifecycle>
</imsmd:record>
</metadata>
</item>
- <item identifier="FILE_2517" identifierref="2517">
- <title>
- <![CDATA[ test1_2fil
]]>
</title>
- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:lifecycle>
- <imsmd:version>
<imsmd:langstring xml:lang="en" />
</imsmd:version>
- <imsmd:status>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">Fronter_PDA_integration</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">OK</imsmd:langstring>
</imsmd:value>
</imsmd:status>
- <imsmd:contribute>
- <imsmd:role>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">LOMv1.0</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">Author</imsmd:langstring>
</imsmd:value>
</imsmd:role>
- <imsmd:centity>
- <imsmd:vcard>
- <![CDATA[
begin:vcard
fn:
ln:
end:vcard


]]>
</imsmd:vcard>
</imsmd:centity>
- <imsmd:date>
<imsmd:datetime>2003-09-23T16:35:52</imsmd:datetime>
</imsmd:date>
</imsmd:contribute>
</imsmd:lifecycle>
</imsmd:record>
</metadata>
</item>
- <item identifier="FOLDER_598" structure="hierarchical">
- <title>
- <![CDATA[ folder_under_testsynk
]]>
</title>
- <item identifier="FILE_3019" identifierref="3019">
- <title>
- <![CDATA[ filbelowfolder
]]>
</title>
- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:lifecycle>
- <imsmd:version>
<imsmd:langstring xml:lang="en" />
</imsmd:version>
- <imsmd:status>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">Fronter_PDA_integration</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">OK</imsmd:langstring>
</imsmd:value>
</imsmd:status>
- <imsmd:contribute>
- <imsmd:role>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">LOMv1.0</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">Author</imsmd:langstring>
</imsmd:value>
</imsmd:role>
- <imsmd:centity>
- <imsmd:vcard>
- <![CDATA[
begin:vcard
fn:
ln:
end:vcard


]]>
</imsmd:vcard>
</imsmd:centity>
- <imsmd:date>
<imsmd:datetime>2003-09-24T15:26:23</imsmd:datetime>
</imsmd:date>
</imsmd:contribute>
</imsmd:lifecycle>
</imsmd:record>
</metadata>
</item>
</item>
</item>
+ <item identifier="FOLDER_540" structure="hierarchical">
- <title>
- <![CDATA[ testsynk2
]]>
</title>
- <item identifier="FILE_2518" identifierref="2518">
- <title>
- <![CDATA[ testsynk2fil
]]>
</title>
- <metadata>
<schema>IMS Content</schema>
<schemaversion>1.1</schemaversion>
- <imsmd:record>
- <imsmd:lifecycle>
- <imsmd:version>
<imsmd:langstring xml:lang="en" />
</imsmd:version>
- <imsmd:status>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">Fronter_PDA_integration</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">OK</imsmd:langstring>
</imsmd:value>
</imsmd:status>
- <imsmd:contribute>
- <imsmd:role>
- <imsmd:source>
<imsmd:langstring xml:lang="x-none">LOMv1.0</imsmd:langstring>
</imsmd:source>
- <imsmd:value>
<imsmd:langstring xml:lang="x-none">Author</imsmd:langstring>
</imsmd:value>
</imsmd:role>
- <imsmd:centity>
- <imsmd:vcard>
- <![CDATA[
begin:vcard
fn:
ln:
end:vcard


]]>
</imsmd:vcard>
</imsmd:centity>
- <imsmd:date>
<imsmd:datetime>2003-09-23T16:35:52</imsmd:datetime>
</imsmd:date>
</imsmd:contribute>
</imsmd:lifecycle>
</imsmd:record>
</metadata>
</item>
</item>
</item>
</organization>
</organizations>
</manifest>

Here comes the VB code:

Set nodeOrganization = xmlFronter.selectSingleNode("//manifest/organizations/organization/item")

Function readNode(nodeItem As IXMLDOMNode, nodeOrganization As IXMLDOMNode) As DOMDocument30
Dim nyNode As IXMLDOMNode
Dim nyOrg As IXMLDOMNode
Dim strTitle As String
For Each nodeItem In nodeOrganization.childNodes
If nodeItem.baseName = "item" Then
If Left(nodeItem.Attributes.getNamedItem("identifier").Text, 4) = "FOLD" Then
strTitle = nodeItem.selectSingleNode("./title").Text
Debug.Print ("Mappenavn: " & strTitle)
strTitle = ""
Set nyNode = nodeItem.childNodes.nextNode ' somethings are wrong in this area!
Set nyOrg = nodeOrganization
Call readNode(nyNode, nyOrg) 'call myself
End If
If Left(nodeItem.Attributes.getNamedItem("identifier").Text, 4) = "FILE" Then
strTitle = nodeItem.selectSingleNode("./title").Text
Debug.Print ("Filnavn: " & strTitle)
End If
End If
Next

End Function

This is only to read the tree, but something goes wrong,
I can't reach the file below folders.
If i only could walk true all nodes, there will be no prob. fetching rest of the data.
If you see the problem, i would be wery happy :-)

i have attached the same xml file, but a litle more compressed :-)

johrog
September 25th, 2003, 07:36 AM
little fast turn!