Пример #1
0
        /// <summary>
        /// 根据一个 Field 对象的内容创建一个新的 SubfieldCollection 对象
        /// </summary>
        /// <param name="container">Field 对象,也被当作要创建的 SubfieldCollection 对象的容器</param>
        /// <returns>新创建的 SubfieldCollection 对象</returns>
        public static SubfieldCollection BuildSubfields(Field container)
        {
            SubfieldCollection subfields = new SubfieldCollection();

            string strField = container.Text;

            for (int i = 0; ; i++)
            {
                string strSubfield         = "";
                string strNextSubfieldName = "";

                // 从字段或子字段组中得到一个子字段
                // parameters:
                //		strText		字段内容,或者子字段组内容。
                //		textType	表示strText中包含的是字段内容还是组内容。若为ItemType.Field,表示strText参数中为字段;若为ItemType.Group,表示strText参数中为子字段组。
                //		strSubfieldName	子字段名,内容为1位字符。如果==null,表示任意子字段
                //					形式为'a'这样的。
                //		nIndex			想要获得同名子字段中的第几个。从0开始计算。
                //		strSubfield		[out]输出子字段。子字段名(1字符)、子字段内容。
                //		strNextSubfieldName	[out]下一个子字段的名字,内容一个字符
                // return:
                //		-1	出错
                //		0	所指定的子字段没有找到
                //		1	找到。找到的子字段返回在strSubfield参数中
                int nRet = MarcUtil.GetSubfield(
                    strField,
                    ItemType.Field,
                    null,
                    i,
                    out strSubfield,
                    out strNextSubfieldName);
                if (nRet == -1 || nRet == 0)
                {
                    break;
                }

                Subfield subfield = new Subfield();
                subfield.Text      = strSubfield;
                subfield.Container = subfields;

                subfields.Add(subfield);
            }

            subfields.Container = container;
            return(subfields);
        }
Пример #2
0
        /// <summary>
        /// 根据一个 Field 对象的内容创建一个新的 SubfieldCollection 对象
        /// </summary>
        /// <param name="container">Field 对象,也被当作要创建的 SubfieldCollection 对象的容器</param>
        /// <returns>新创建的 SubfieldCollection 对象</returns>
        public static SubfieldCollection BuildSubfields(Field container)
        {
            SubfieldCollection subfields = new SubfieldCollection();

            string strField = container.Text;

            for (int i = 0; ; i++)
            {
                string strSubfield = "";
                string strNextSubfieldName = "";


                // 从字段或子字段组中得到一个子字段
                // parameters:
                //		strText		字段内容,或者子字段组内容。
                //		textType	表示strText中包含的是字段内容还是组内容。若为ItemType.Field,表示strText参数中为字段;若为ItemType.Group,表示strText参数中为子字段组。
                //		strSubfieldName	子字段名,内容为1位字符。如果==null,表示任意子字段
                //					形式为'a'这样的。
                //		nIndex			想要获得同名子字段中的第几个。从0开始计算。
                //		strSubfield		[out]输出子字段。子字段名(1字符)、子字段内容。
                //		strNextSubfieldName	[out]下一个子字段的名字,内容一个字符
                // return:
                //		-1	出错
                //		0	所指定的子字段没有找到
                //		1	找到。找到的子字段返回在strSubfield参数中
                int nRet = MarcUtil.GetSubfield(strField,
                    ItemType.Field,
                    null,
                    i,
                    out strSubfield,
                    out strNextSubfieldName);
                if (nRet == -1 || nRet == 0)
                    break;

                Subfield subfield = new Subfield();
                subfield.Text = strSubfield;
                subfield.Container = subfields;

                subfields.Add(subfield);
            }

            subfields.Container = container;

            return subfields;
        }