마크정리->마크파일불러오기(fullparser 를 적용하여 데이터를 추출 함)

This commit is contained in:
2026-02-25 22:20:45 +09:00
parent 3a503dda6d
commit 5978d45af6

View File

@@ -272,28 +272,63 @@ namespace UniMarc
{ {
String_Text st = new String_Text(); 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++) for (int a = 0; a < grid.Length - 1; a++)
{ {
string[] Search = { //string[] Search = {
// 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f //// 등록번호, 분류기호, 저자기호, 볼륨v, 복본c, 별치f
"049l", "090a", "090b", "049v", "049c", "049f", // "049l", "090a", "090b", "049v", "049c", "049f",
// ISBN, 도서명, 총서명1, 총서번호1, 총서명2, 총서번호2, 출판사, 정가, 저자 //// ISBN, 도서명, 총서명1, 총서번호1, 총서명2, 총서번호2, 출판사, 정가, 저자
"020a", "245a", "440a", "440v", "490a", "490v", "260b", "950b", "245d" }; // "020a", "245a", "440a", "440v", "490a", "490v", "260b", "950b", "245d" };
string[] Search_Res = st.Take_Tag(grid[a], Search); var fullmarc = grid[a] + (char)0x1D;
string[] Author_Search = { "100a", "110a", "111a" }; var rlt = fullparser.ParseFullMarc(fullmarc);
string[] Author_Res = st.Take_Tag(grid[a], Author_Search); if (rlt.success == false)
string author_Fin = Search_Res[14];
foreach (string author in Author_Res)
{ {
if (author != "") warnmessage.AppendLine($"[{a + 1}] 번 줄 마크 인식 실패 : {rlt.message}");
{ continue;
author_Fin = author;
break;
}
} }
// 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
{
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, 연번, 등록번호, 분류, 저자기호 // idx, 연번, 등록번호, 분류, 저자기호
// "", "", Search_Res[0], Search_Res[1], Search_Res[2], // "", "", Search_Res[0], Search_Res[1], Search_Res[2],
// 볼륨v, 복본c, 별치f, 구분, isbn // 볼륨v, 복본c, 별치f, 구분, isbn
@@ -305,30 +340,12 @@ namespace UniMarc
// 검색태그 // 검색태그
// "", "T" // "", "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>(); if (ResultItems == null) ResultItems = new List<MarcPlanItem>();
ResultItems.Add(item); ResultItems.Add(item);
} }
if (warnmessage.Length > 0)
UTIL.MsgI(warnmessage.ToString());
} }
#endregion #endregion