namespace Infrastructure.StockData; /// /// SEIBro getAssetXrcInfo(파생결합증권 기초자산 행사정보) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력. /// 실샘플 래퍼 = <RESULT> **대문자** (readme §1 확정 — 파생결합 5종 중 하나). /// ⚠️ 응답에 ISIN 이 없어(요청 파라미터로만 받음) 배치가 요청 ISIN 을 스탬핑 — 여기선 (AssetSeq, XrcStdSeq, 값) 반환. /// 자연키 ASSET_SEQ·XRC_STD_SEQ 없으면 스킵. /// public static class SeibroAssetXrcParser { public sealed record Row( int AssetSeq, int XrcStdSeq, decimal? XrcStdRatio, decimal? XrcPrice ); public static IReadOnlyList Parse(SeibroXml.Envelope envelope) { var rows = new List(); foreach (var fields in envelope.Rows) { var assetSeq = SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "ASSET_SEQ")); var xrcStdSeq = SeibroFieldParse.Int(SeibroXml.GetOrNull(fields, "XRC_STD_SEQ")); if (assetSeq is null || xrcStdSeq is null) { continue; } rows.Add(new Row( assetSeq.Value, xrcStdSeq.Value, SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "XRC_STD_RATIO")), SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "XRC_PRICE")) )); } return rows; } }