Jawad,
I am not sure why you are getting nothing back. But try the below which is returning me 2 Patient drug detail records.
string str = @"=""="" <soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> <soap:Body> <GetPatientFullMedicationHistoryResponse xmlns=""https://secure.newcropaccounts.com/V7/webservices""> <GetPatientFullMedicationHistoryResult> <result> <Status>OK</Status> <Message /> <XmlResponse /> <RowCount>2</RowCount> <Timing>0</Timing> </result> <PatientDrugDetails> <PatientDrugDetail> <ExternalPatientID>166</ExternalPatientID> <DrugID>183716</DrugID> <DrugTypeID>F</DrugTypeID> <DrugName>Pondimin</DrugName> <Strength>20</Strength> <StrengthUOM>mg</StrengthUOM> </PatientDrugDetail> <PatientDrugDetail> <ExternalPatientID>166</ExternalPatientID> <DrugID>183716</DrugID> <DrugTypeID>F</DrugTypeID> <DrugName>Pondimin</DrugName> <Strength>20</Strength> <StrengthUOM>mg</StrengthUOM> </PatientDrugDetail> </PatientDrugDetails> </GetPatientFullMedicationHistoryResult> </GetPatientFullMedicationHistoryResponse> </soap:Body> </soap:Envelope>";
XNamespace ns = "https://secure.newcropaccounts.com/V7/webservices";
XDocument doc = XDocument.Parse(str);
IEnumerable<XElement> list1 = doc.Descendants(ns+"PatientDrugDetail");
OR you could use LinQ as in Solution 1
XNamespace ns = "https://secure.newcropaccounts.com/V7/webservices";
XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
XDocument doc = XDocument.Parse(str);
XElement root = doc.Root.Element(soap+"Body").Element(ns+"GetPatientFullMedicationHistoryResponse").Element(ns+"GetPatientFullMedicationHistoryResult").Element(ns+"PatientDrugDetails");
IEnumerable<XElement> patDrugDet = from el in root.Elements(ns + "PatientDrugDetail") select el;