마크정리->마크파일불러오기(fullparser 를 적용하여 데이터를 추출 함)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user