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