// 创建书目摘要 public static string CreateSummary( string strRecPath, string strMARC, string syntax) { string strError = ""; int nRet = 0; List <NameValueLine> results = null; if (syntax == "usmarc") { nRet = MarcTable.ScriptMarc21( strRecPath, strMARC, "areas", null, out results, out strError); } else { nRet = MarcTable.ScriptUnimarc( strRecPath, strMARC, "areas", null, out results, out strError); } if (nRet == -1) { return("error:" + strError); } StringBuilder text = new StringBuilder(); foreach (var line in results) { if (text.Length > 0) { text.Append(". -- "); } text.Append(line.Value); } return(text.ToString()); }
// 填充浏览列表 void FillBrowseList(string xml) { this.listView_browse.Items.Clear(); // "http://www.loc.gov/MARC21/slim" XmlDocument dom = new XmlDocument(); dom.LoadXml(xml); XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); nsmgr.AddNamespace("srw", "http://www.loc.gov/zing/srw/"); nsmgr.AddNamespace("marc21", "http://www.loc.gov/MARC21/slim"); /* * * <recordIdentifier>9910523143603961</recordIdentifier> * <recordPosition>1</recordPosition> * */ XmlNodeList records = dom.DocumentElement.SelectNodes("//srw:record", nsmgr); foreach (XmlElement record in records) { string id = record.SelectSingleNode("srw:recordIdentifier", nsmgr)?.InnerText; string pos = record.SelectSingleNode("srw:recordPosition", nsmgr)?.InnerText; string marcxml = record.SelectSingleNode("//marc21:record", nsmgr).OuterXml; XmlDocument marcxml_dom = new XmlDocument(); marcxml_dom.LoadXml(marcxml); int nRet = MarcUtil.Xml2Marc(marcxml_dom, true, null, out string marcSyntax, out string strMARC, out string strError); if (nRet == -1) { throw new Exception(strError); } List <DigitalPlatform.Marc.NameValueLine> results = null; if (marcSyntax == "usmarc") { nRet = MarcTable.ScriptMarc21("", strMARC, "", null, out results, out strError); } else if (marcSyntax == "unimarc") { nRet = MarcTable.ScriptUnimarc("", strMARC, "", null, out results, out strError); } else { throw new Exception($"未知的 MARC 格式 '{marcSyntax}'"); } if (nRet == -1) { throw new Exception(strError); } ListViewItem item = new ListViewItem(); ListViewUtil.ChangeItemText(item, 0, pos); FillColumns(item, results); this.listView_browse.Items.Add(item); } }