마크정리->마크파일불러오기(fullparser 를 적용하여 데이터를 추출 함)
This commit is contained in:
@@ -272,27 +272,62 @@ namespace UniMarc
|
||||
{
|
||||
String_Text st = new String_Text();
|
||||
|
||||
string[] grid = text.Split(' ');
|
||||
string[] grid = text.Split(new char[] { (char)0x1D }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
var fullparser = new MarcParser();
|
||||
var warnmessage = new System.Text.StringBuilder();
|
||||
for (int a = 0; a < grid.Length - 1; a++)
|
||||
{
|
||||
string[] Search = {
|
||||
// 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f
|
||||
"049l", "090a", "090b", "049v", "049c", "049f",
|
||||
// ISBN, 도서명, 총서명1, 총서번호1, 총서명2, 총서번호2, 출판사, 정가, 저자
|
||||
"020a", "245a", "440a", "440v", "490a", "490v", "260b", "950b", "245d" };
|
||||
//string[] Search = {
|
||||
//// 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f
|
||||
// "049l", "090a", "090b", "049v", "049c", "049f",
|
||||
//// ISBN, 도서명, 총서명1, 총서번호1, 총서명2, 총서번호2, 출판사, 정가, 저자
|
||||
// "020a", "245a", "440a", "440v", "490a", "490v", "260b", "950b", "245d" };
|
||||
|
||||
string[] Search_Res = st.Take_Tag(grid[a], Search);
|
||||
string[] Author_Search = { "100a", "110a", "111a" };
|
||||
string[] Author_Res = st.Take_Tag(grid[a], Author_Search);
|
||||
string author_Fin = Search_Res[14];
|
||||
foreach (string author in Author_Res)
|
||||
var fullmarc = grid[a] + (char)0x1D;
|
||||
var rlt = fullparser.ParseFullMarc(fullmarc);
|
||||
if (rlt.success == false)
|
||||
{
|
||||
if (author != "")
|
||||
warnmessage.AppendLine($"[{a + 1}] 번 줄 마크 인식 실패 : {rlt.message}");
|
||||
continue;
|
||||
}
|
||||
|
||||
// string[] Search_Res = st.Take_Tag(grid[a], Search);
|
||||
|
||||
//저자기호목록 마지막것을 우선시한다 ("100a", "110a", "111a")
|
||||
// string[] Author_Search = { "100a", "110a", "111a" };
|
||||
|
||||
//저자기호확인
|
||||
var v_author = string.Empty;
|
||||
var v_111a = fullparser.GetTag("111a").FirstOrDefault();
|
||||
var v_110a = fullparser.GetTag("110a").FirstOrDefault();
|
||||
var v_100a = fullparser.GetTag("100a").FirstOrDefault();
|
||||
|
||||
if (v_111a.isEmpty() == false) v_author = v_111a;
|
||||
else if (v_110a.isEmpty() == false) v_author = v_110a;
|
||||
else if (v_100a.isEmpty() == false) v_author = v_100a;
|
||||
|
||||
|
||||
var item = new MarcPlanItem
|
||||
{
|
||||
author_Fin = author;
|
||||
break;
|
||||
}
|
||||
}
|
||||
RegNum = fullparser.GetTag("049l").FirstOrDefault(),// Search_Res[0], 등록번호
|
||||
ClassCode = fullparser.GetTag("090a").FirstOrDefault(),//Search_Res[1], 분류기호
|
||||
AuthorCode = fullparser.GetTag("090b").FirstOrDefault(),//Search_Res[2], 저자기호
|
||||
Volume = fullparser.GetTag("049v").FirstOrDefault(),//Search_Res[3], 볼륨v
|
||||
Copy = fullparser.GetTag("049c").FirstOrDefault(),//Search_Res[4], 복본c
|
||||
Prefix = fullparser.GetTag("049f").FirstOrDefault(),//Search_Res[5], 별치f
|
||||
Isbn = fullparser.GetTag("020a").FirstOrDefault(),//Search_Res[6], ISBN
|
||||
BookName = fullparser.GetTag("245a").FirstOrDefault(),// Search_Res[7], 도서명
|
||||
SBookName1 = fullparser.GetTag("440a").FirstOrDefault(),// Search_Res[8],총서명1
|
||||
SBookNum1 = fullparser.GetTag("440v").FirstOrDefault(),//Search_Res[9],총서번호1
|
||||
SBookName2 = fullparser.GetTag("490a").FirstOrDefault(),//Search_Res[10],총서명2
|
||||
SBookNum2 = fullparser.GetTag("490v").FirstOrDefault(),//Search_Res[11],총서번호2
|
||||
Author = v_author,
|
||||
BookComp = fullparser.GetTag("260b").FirstOrDefault(),//Search_Res[12],출판사
|
||||
Price = fullparser.GetTag("950b").FirstOrDefault(),//Search_Res[13],정가
|
||||
Marc = fullmarc,
|
||||
ColCheck = "T"
|
||||
};
|
||||
|
||||
// idx, 연번, 등록번호, 분류, 저자기호
|
||||
// "", "", Search_Res[0], Search_Res[1], Search_Res[2],
|
||||
@@ -305,30 +340,12 @@ namespace UniMarc
|
||||
// 검색태그
|
||||
// "", "T"
|
||||
|
||||
var item = new MarcPlanItem
|
||||
{
|
||||
RegNum = Search_Res[0],
|
||||
ClassCode = Search_Res[1],
|
||||
AuthorCode = Search_Res[2],
|
||||
Volume = Search_Res[3],
|
||||
Copy = Search_Res[4],
|
||||
Prefix = Search_Res[5],
|
||||
Isbn = Search_Res[6],
|
||||
BookName = Search_Res[7],
|
||||
SBookName1 = Search_Res[8],
|
||||
SBookNum1 = Search_Res[9],
|
||||
SBookName2 = Search_Res[10],
|
||||
SBookNum2 = Search_Res[11],
|
||||
Author = author_Fin,
|
||||
BookComp = Search_Res[12],
|
||||
Price = Search_Res[13],
|
||||
Marc = grid[a],
|
||||
ColCheck = "T"
|
||||
};
|
||||
|
||||
if (ResultItems == null) ResultItems = new List<MarcPlanItem>();
|
||||
ResultItems.Add(item);
|
||||
}
|
||||
if (warnmessage.Length > 0)
|
||||
UTIL.MsgI(warnmessage.ToString());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user