Exemplo n.º 1
0
        static string ToString(NameValueLine line)
        {
            StringBuilder text = new StringBuilder();

            text.Append("Name=" + line.Name + "\r\n");
            text.Append("Type=" + line.Type + "\r\n");
            text.Append("Value=" + line.Value + "\r\n");
            text.Append("Xml=" + line.Xml + "\r\n");

            return(text.ToString());
        }
Exemplo n.º 2
0
        static void CompareResults(List <NameValueLine> results,
                                   List <NameValueLine> expect_results)
        {
            Debug.WriteLine("\r\n结果:\r\n" + ToString(results) + "\r\n期望的结果:\r\n" + ToString(expect_results));

            if (results.Count != expect_results.Count)
            {
                throw new Exception("和期望的 results.Count 不符合。\r\n实际=" + results.Count + "  期望=" + expect_results.Count);
            }

            for (int i = 0; i < results.Count; i++)
            {
                NameValueLine line        = results[i];
                NameValueLine expect_line = expect_results[i];
                if (ToString(line) != ToString(expect_line))
                {
                    throw new Exception("两个集合不一致(集合元素 " + (i + 1) + "位置)。\r\n结果:\r\n" + ToString(line) + "\r\n期望的结果:\r\n" + ToString(expect_line));
                }
            }
        }
Exemplo n.º 3
0
        public static void VerifyTableXml(string strWorksheet,
                                          string strStyle,
                                          string strTableXml)
        {
            MarcRecord           record         = MarcRecord.FromWorksheet(strWorksheet);
            List <NameValueLine> expect_results = NameValueLine.FromTableXml(strTableXml);

            int nRet = MarcTable.ScriptUnimarc(
                "中文图书/1",
                record.Text,
                strStyle,
                out List <NameValueLine> results,
                out string strError);

            if (nRet == -1)
            {
                throw new Exception(strError);
            }

            CompareResults(results, expect_results);
        }
Exemplo n.º 4
0
        // 列出一个检索目标的所有可用检索途径
        public async Task <List <NameValueLine> > ListUses(SruTarget target)
        {
            List <NameValueLine> results = new List <NameValueLine>();

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

            nsmgr.AddNamespace("srw", "http://www.loc.gov/zing/srw/");
            nsmgr.AddNamespace("explain20", "http://explain.z3950.org/dtd/2.0/");
            nsmgr.AddNamespace("explain21", "http://explain.z3950.org/dtd/2.1/");

            /*
             *
             * <explain xmlns="http://explain.z3950.org/dtd/2.0/" xmlns:ns="http://explain.z3950.org/dtd/2.1/">
             * <serverInfo>
             * <ns:host>bibsys-network.alma.exlibrisgroup.com</ns:host>
             * <ns:port>80</ns:port>
             * <ns:database>47BIBSYS_NETWORK</ns:database>
             * </serverInfo>
             * <indexInfo>
             * <set name="alma" identifier="marcxml"/>
             * <index>
             * <ns:title>Accompanying Material</ns:title>
             * <map>
             * <name set="alma">accompanying_material</name>
             * </map>
             * <configInfo>
             * <supports type="relation">all</supports>
             * <supports type="relation">=</supports>
             * <supports type="emptyTerm"/>
             * </configInfo>
             * </index>
             * <index>
             * <ns:title>Additional physical form available note</ns:title>
             * <map>
             * <name set="alma">additional_physical_form_available_note</name>
             * </map>
             * <configInfo>
             * <supports type="relation">all</supports>
             * <supports type="relation">=</supports>
             * <supports type="relation">==</supports>
             * </configInfo>
             * </index>
             * */

            XmlDocument dom = await GetExplainDomAsync(target.Name,
                                                       "explain",
                                                       target.GetExplainUrl()).ConfigureAwait(false);

            XmlNodeList nodes = dom.DocumentElement.SelectNodes("//explain20:indexInfo/explain20:index", nsmgr);

            foreach (XmlElement index in nodes)
            {
                string        title = index.SelectSingleNode("explain21:title", nsmgr)?.InnerText;
                XmlElement    map   = index.SelectSingleNode("explain20:map/explain20:name", nsmgr) as XmlElement;
                string        set   = map.GetAttribute("set");
                NameValueLine line  = new NameValueLine(title, $"{set}.{map.InnerText}");
                results.Add(line);
            }

            return(results);
        }