| 12345678910111213141516171819202122232425262728293031 |
- using System.Globalization;
- namespace Infrastructure.StockData;
- /// <summary>
- /// SEIBro getIssucoCustnoByIsin(발행종목→발행회사번호 조회) 응답 파서 — 순수 C#.
- /// 단건 fallback 용 (배치 미사용) — getShotnByMart 스냅샷에 없는 종목의 ISSUCO_CUSTNO 를 ISIN/단축코드로 개별 조회할 때 쓴다.
- /// 행 필드: ISSUCO_CUSTNO(발행회사번호, 필수) / REP_SECN_NM(대표종목명, 선택). 회사번호 없는/비숫자 행은 건너뛴다.
- /// </summary>
- public static class SeibroIssucoCustnoParser
- {
- /// <summary>발행회사번호 1행</summary>
- public sealed record Row(int IssucoCustno, string? RepSecnName);
- public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
- {
- var rows = new List<Row>();
- foreach (var fields in envelope.Rows)
- {
- if (!int.TryParse(SeibroXml.GetOrNull(fields, "ISSUCO_CUSTNO"), NumberStyles.Integer, CultureInfo.InvariantCulture, out var custno))
- {
- continue;
- }
- rows.Add(new Row(custno, SeibroXml.GetOrNull(fields, "REP_SECN_NM")?.Trim()));
- }
- return rows;
- }
- }
|