EMC Developer Network

Execute a XDQL Query and Convert Results to a XML Document

December 2005

Software Environment

FeatureTested on
Operating SystemWindows 2000 Server SP4
ProgrammingLanguageC#
CompilerMicrosoft (R) Visual C# 2005 Compiler version 8.00.50727.42
Runtime Microsoft (R) Windows (R) 2005 Framework version 2.0.50727
DFC5.3 SP1
Content Server5.3 SP1
DFC PIA5.3.0.53

Snippet


using System;
using System.Xml;
using System.Runtime.InteropServices;
using Documentum.Interop.DFC;

namespace CodeSnippets
{
	
	public class XDQL
	{
		public static void Main(String[] args)
		{
			XDQL xdql = new XDQL();
			xdql.ExecuteXMLQuery();
			
		}

		String username = "dmadmin";
		String password = "dmadmin";
		String repository = "devprog";	
	
		public void ExecuteXMLQuery()
		{
			IDfXmlQuery xmlQuery = null;
			IDfSessionManager sessMgr = null;
			IDfSession sess = null;
			IDfClientX clientX = null;
			string queryStr = "select r_object_id,object_name from dm_cabinet";

			try
			{
				clientX = new DfClientXClass();
				
				xmlQuery = clientX.getXmlQuery();
				xmlQuery.setDQL(queryStr);
				
				//Set various XDQL options. 

				sessMgr = CreateSessionManager();
				sess = sessMgr.getSession(repository);
				xmlQuery.execute(0,sess);

				String results = xmlQuery.getXMLString();
				Console.WriteLine(results);

				//Convert results to DOM
				XmlDocument xmlDoc = new XmlDocument();
				xmlDoc.LoadXml(results);				
				Console.WriteLine(xmlDoc.OuterXml);

				Console.ReadLine();
			}
			catch(COMException ce)
			{
				Console.WriteLine(ce.Message);
				Console.WriteLine(ce.StackTrace);
			}
			finally
			{
				if((sessMgr != null) && (sess != null))
				{
					sessMgr.release(sess);
					Marshal.ReleaseComObject(sessMgr);
					Marshal.ReleaseComObject(sess);
				}

				if(xmlQuery != null) Marshal.ReleaseComObject(xmlQuery);
				if(clientX != null) Marshal.ReleaseComObject(clientX);
			}
		}

		private IDfSessionManager CreateSessionManager()
		{
			IDfClientX clientX = null;
			IDfClient localClient = null;
			IDfSessionManager sessMgr = null;
			IDfLoginInfo li = null;			
			try
			{
				clientX = new DfClientXClass();
				
				li = clientX.getLoginInfo();
				li.setUser(username);
				li.setPassword(password);

				localClient = clientX.getLocalClient();
				sessMgr = localClient.newSessionManager();

				sessMgr.setIdentity(repository,li);	
						
				
			}
			catch(COMException ex)
			{
				Console.WriteLine("Authentication Failed");
				Console.WriteLine(ex.Message);
				Console.WriteLine(ex.StackTrace);

			}
			finally
			{				
				if(clientX != null)Marshal.ReleaseComObject(clientX);
				if(localClient != null) Marshal.ReleaseComObject(localClient);
				if(li != null) Marshal.ReleaseComObject(li);								
			}
			return sessMgr;	
		}

	}
}