| 123456789101112131415161718192021222324252627282930313233 |
- namespace Infrastructure.StockData;
- /// <summary>
- /// SEIBro getSecnFrsecCusInfo(종목별 외화증권 보관현황) 응답 파서 — 순수 C#. 공용 SeibroXml envelope 입력 (외화증권.md §3).
- /// 실샘플 래퍼 = <result> 소문자. 응답 필드는 NATION_CD·SECN_TPCD·FRSEC_TOT_HOLD_AMT·FRSEC_TOT_HOLD_QTY 4종 —
- /// STD_DT·ISIN 은 요청 파라미터라 배치가 스탬핑한다. 실샘플은 종목당 국가별 다수 행(예 DE·US) — 배치는 종목당 자연키(StdDt,Isin)라 첫 행만 반영.
- /// </summary>
- public static class SeibroSecnFrsecCusParser
- {
- public sealed record Row(
- string? NationCd,
- string? SecnTpcd,
- decimal? FrsecTotHoldAmt,
- decimal? FrsecTotHoldQty
- );
- public static IReadOnlyList<Row> Parse(SeibroXml.Envelope envelope)
- {
- var rows = new List<Row>();
- foreach (var fields in envelope.Rows)
- {
- rows.Add(new Row(
- SeibroXml.GetOrNull(fields, "NATION_CD")?.Trim(),
- SeibroXml.GetOrNull(fields, "SECN_TPCD")?.Trim(),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FRSEC_TOT_HOLD_AMT")),
- SeibroFieldParse.Decimal(SeibroXml.GetOrNull(fields, "FRSEC_TOT_HOLD_QTY"))
- ));
- }
- return rows;
- }
- }
|