private void HarvestMarcData(String marcFile, int batchID, String institutionCode) { BHLProvider provider = new BHLProvider(); // Open the file and parse the data within it XmlDocument xml = new XmlDocument(); xml.Load(marcFile); XmlNamespaceManager nsmgr = new XmlNamespaceManager(xml.NameTable); nsmgr.AddNamespace("ns", "http://www.loc.gov/MARC21/slim"); // update the root Marc information String leader = String.Empty; XmlNode marcNode = xml.SelectSingleNode("ns:record/ns:leader", nsmgr); if (marcNode != null) leader = marcNode.InnerText; Marc marc = provider.MarcInsertAuto(batchID, marcFile.Replace(ConfigurationManager.AppSettings["MarcUploadDrive"], ConfigurationManager.AppSettings["MarcUploadServer"]), institutionCode, leader, null); // Insert the new Marc control information XmlNodeList controlFields = xml.SelectNodes("ns:record/ns:controlfield", nsmgr); foreach (XmlNode controlField in controlFields) { String tag = (controlField.Attributes["tag"] == null) ? String.Empty : controlField.Attributes["tag"].Value; String value = controlField.InnerText; provider.MarcControlInsertAuto(marc.MarcID, tag, value); } // Insert the new Marc data field and subfield information XmlNodeList dataFields = xml.SelectNodes("ns:record/ns:datafield", nsmgr); foreach (XmlNode dataField in dataFields) { String tag = (dataField.Attributes["tag"] == null) ? String.Empty : dataField.Attributes["tag"].Value; String indicator1 = (dataField.Attributes["ind1"] == null) ? String.Empty : dataField.Attributes["ind1"].Value; String indicator2 = (dataField.Attributes["ind2"] == null) ? String.Empty : dataField.Attributes["ind2"].Value; MarcDataField marcDataField = provider.MarcDataFieldInsertAuto(marc.MarcID, tag, indicator1, indicator2); XmlNodeList subFields = dataField.SelectNodes("ns:subfield", nsmgr); foreach (XmlNode subField in subFields) { String code = (subField.Attributes["code"] == null) ? String.Empty : subField.Attributes["code"].Value; String value = subField.InnerText; provider.MarcSubFieldInsertAuto(marcDataField.MarcDataFieldID, code, value); } } }