! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

C# Text Parser를 사용하여 데이터를 추출하고 데스크톱앱에 추가하기 > 온라인 스터디

본문 바로가기

ComponentOne

온라인 스터디

WPF C# Text Parser를 사용하여 데이터를 추출하고 데스크톱앱에 추가하기

페이지 정보

작성자 GrapeCity 작성일 2023-01-12 11:04 조회 617회 댓글 0건

본문

한 조직에서 클라이언트로부터 이메일을 받는다고 가정해 보겠습니다. 조직에서는 이러한 이메일을 분석하여 특정 데이터를 추출하고 이를 통해 정보를 얻고자 합니다. 이메일 클라이언트는 정리와 분석 정도에만 활용할 수 있습니다. 수동으로 대량의 이메일 데이터를 분석하여 필요한 세부 정보를 추출하는 것은 번거롭고 오래 걸립니다. 이러한 작업은 코드를 사용하여 자동화해야 하지만, HTML 기반 파일을 다루는 것은 쉽지 않습니다.


ComponentOne TextParser는 HTML 이메일과 같은 구조화된 소스에서 적합한 양의 데이터를 추출하는 데 효과적이라고 입증되어 있습니다.


이 블로그에서는 C1TextParser를 사용하여 HTML로 구조화된 파일에서 송장 합계를 추출하는 프로세스를 자동화하는 데 초점을 맞출 것입니다. 유사하게 반복되는 구조가 있는 송장에서 송장 합계, 주문 번호, 배송 요금 및 고객 주소 등의 세부 정보를 추출하는 HTML 추출기를 만들어 보겠습니다.


이 응용 프로그램을 개발하려면 다음 단계를 따라야 합니다.

  • 새 WPF 응용 프로그램 만들기

  • 앱에 필수 NuGet 패키지 설치

  • HTML 추출기 만들기

  • 필수 세부 정보를 추출하고 JSON 형식으로 구문 분석

  • 추출한 JSON 결과 역직렬화

  • ComponentOne의 WPF FlexGrid를 사용하여 추출한 데이터 표시



새 WPF 응용 프로그램 만들기


  1. Visual Studio를 엽니다. '새 프로젝트 만들기'를 선택합니다.


  1. 검색 모음에 'wpf 앱'을 입력하고 '새 프로젝트 만들기' 대화 상자에서 WPF 앱(.NET Framework)을 선택합니다. 다음을 클릭합니다.


  1. 새 프로젝트 구성 대화 상자에 프로젝트 이름, 프로젝트 위치 및 프레임워크와 같은 프로젝트 구성을 추가합니다.



앱에 필수 Nuget 패키지 설치


  1. 솔루션 탐색기(Ctrl+Alt+L)에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.

  1. 찾아보기 탭에서 C1.TextParser를 검색하고 최신 버전을 설치합니다.

위의 단계를 완료하면 C1TextParser 라이브러리가 프로젝트에 추가됩니다.



HTML 추출기 만들기


이 단계에서는 이메일 송장 템플릿을 사용하여 HTML 추출기를 만들겠습니다.


시작을 위해 추출할 텍스트의 자리 표시자를 포함할 템플릿 파일로 송장 이메일 중 하나를 사용하겠습니다.


자리 표시자는 소스 파일에서 추출하는 텍스트 자리의 XPath를 정의합니다. XPath는 XML/HTML 코드에서 요소를 탐색하는 데 사용되는 경로 식입니다.


템플릿 파일의 HTML 콘텐츠를 열어 HTML 추출기에 전달하여 템플릿 스트림을 정의합니다.

_receiptTemplateStream = File.Open(ParserStringResource.TemplateFilePath, FileMode.Open);
_htmlExtractor = new HtmlExtractor(_receiptTemplateStream);


이제 자리 표시자를 HTML 추출기에 추가합니다.

// function to add place holders to HTML Extractor
​
public void AddPlaceHoldersToExtractor()
{
  _htmlExtractor.AddPlaceHolder("TotalAmount", _invoiceExtractorConfiguration.TotalAmtSamplePath, 1, 5);
  _htmlExtractor.AddPlaceHolder("ShippingCharges", _invoiceExtractorConfiguration.ShipAmtSamplePath, 1, 4);
  _htmlExtractor.AddPlaceHolder("AddressLine1", _invoiceExtractorConfiguration.AddressLine1SamplePath);
  _htmlExtractor.AddPlaceHolder("AddressLine2", _invoiceExtractorConfiguration.AddressLine2SamplePath);
  _htmlExtractor.AddPlaceHolder("AddressLine3", _invoiceExtractorConfiguration.AddressLine3SamplePath);
  _htmlExtractor.AddPlaceHolder("OrderNo", _invoiceExtractorConfiguration.OrderNumSamplePath);
}



Chrome 브라우저를 사용하여 XPath를 가져오는 방법은 무엇입니까?


XPath를 가져오려면 템플릿 파일의 HTML 소스 코드를 검사하고 추출할 텍스트를 포함하는 요소를 찾아야 합니다.

다음 GIF는 Chrome으로 HTML 파일을 열 때 XPath를 가져오는 방법을 설명합니다.



세부 정보를 추출하고 JSON 형식으로 결과 구문 분석


이제 이전 단계에서 만든 HTML 추출기를 사용하여 필수 세부 정보를 추출하겠습니다. HTMLExtractor's Extract() 메서드는 이미 정의된 자리 표시자를 기반으로 입력 스트림에서 텍스트를 추출합니다. 추출된 결과를 기반으로 JSON 문자열을 만들면 개체에서 추가적으로 역직렬화될 수 있습니다.

string _extractedResults = _htmlExtractor.Extract(_sourceTemplateStream).ToJsonString();



추출한 JSON 결과 역직렬화

JSON 문자열을 역직렬화하려면 JSON 속성(키)과 일치하는 속성이 있는 클래스가 필요합니다.

다음과 같이 샘플 응용 프로그램에 대해 이름이 'InvoiceData'라는 클래스를 만들겠습니다.

public class InvoiceData
{
  public string OrderNo { get; set; }  
  public double TotalAmount { get; set; }
  public double ShippingCharges { get; set; }
  public string CompleteAddress {
          get {
              return AddressLine1 + ", " + AddressLine2 + ", " + AddressLine3;
          }
      }
  public string AddressLine1 { get; set; }
  public string AddressLine2 { get; set; }
  public string AddressLine3 { get; set; }
}


역직렬화된 JSON 문자열에서 InvoiceData 유형의 컬렉션으로 가져온 개체를 추가합니다.

_invoices.Add(JsonConvert.DeserializeObject<InvoiceData> ((JObject.Parse(_extractedResults))["Result"].ToString()));




ComponentOne의 WPF FlexGrid를 사용하여 추출한 데이터 표시


가져온 결과를 사용자에게 표시하도록 C1Flexgrid 컨트롤을 사용하겠습니다. flexgrid는 InvoiceData 유형 개체의 컬렉션에 바인딩됩니다.

flexgrid.ItemsSource = _invoiceData.GetInvoiceData();
flexgrid.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.Visible;


다음은 응용 프로그램에 데이터가 표시되는 방식에 대한 이미지입니다.



결론

위의 문서에서는 C1TextParser 라이브러리를 사용하여 여러 송장 이메일에서 정보를 추출하는 방법을 설명했습니다. 이 라이브러리는 XML 라이브러리에서 데이터를 추출하도록 다양한 사례 시나리오로 작업하기에 충분히 효율적입니다. 데모를 다운로드합니다.


ComponentOne의 TextParser 라이브러리에 대한 자세한 내용은 여기를 참조하십시오.





지금 바로 ComponentOne을 다운로드하여 직접 테스트해보세요!

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.