/// <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); }
/// <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; }