UNPKG

@xapi-js/core

Version:

Core utilities and types for X-API.

218 lines (153 loc) 5.26 kB
# @xapi-ts/core This package provides core utilities and types for working with X-API data. ## Installation ```bash # npm npm install @xapi-ts/core # yarn yarn add @xapi-ts/core # pnpm pnpm add @xapi-ts/core # bun bun add @xapi-ts/core # deno deno add @xapi-ts/core ``` ## Usage `@xapi-ts/core` provides the fundamental classes and functions for working with X-API data. ### Parsing X-API XML You can parse an X-API XML string into an `XapiRoot` object: ```typescript import { parse, XapiRoot } from '@xapi-ts/core'; const xmlString = `<?xml version="1.0" encoding="UTF-8"?> <Root xmlns="http://www.tobesoft.com/platform/Dataset" ver="4000"> <Parameters> <Parameter id="service">stock</Parameter> <Parameter id="method">search</Parameter> </Parameters> </Root>`; async function parseXapi() { const xapi = await parse(xmlString); console.log('Service:', xapi.getParameter('service')?.value); console.log('Method:', xapi.getParameter('method')?.value); } parseXapi(); ``` ### Creating and Manipulating XapiRoot You can create an `XapiRoot` object and add parameters and datasets programmatically: ```typescript import { XapiRoot, Dataset } from '@xapi-ts/core'; const xapi = new XapiRoot(); // Add parameters xapi.addParameter({ id: 'resultCode', value: '0' }); xapi.addParameter({ id: 'resultMsg', value: 'SUCCESS' }); // Create and add a dataset const usersDataset = new Dataset('users'); usersDataset.addColumn({ id: 'id', type: 'INT' }); usersDataset.addColumn({ id: 'name', type: 'STRING' }); usersDataset.newRow(); usersDataset.setColumn(0, 'id', 1); usersDataset.setColumn(0, 'name', 'Alice'); usersDataset.newRow(); usersDataset.setColumn(1, 'id', 2); usersDataset.setColumn(1, 'name', 'Bob'); xapi.addDataset(usersDataset); console.log('XapiRoot created:', xapi); ``` ### Serializing XapiRoot to XML You can serialize an `XapiRoot` object back into an X-API XML string: ```typescript import { writeString, XapiRoot, Dataset } from '@xapi-ts/core'; const xapi = new XapiRoot(); xapi.addParameter({ id: 'status', value: 'OK' }); const productsDataset = new Dataset('products'); productsDataset.addColumn({ id: 'productId', type: 'STRING' }); productsDataset.addColumn({ id: 'price', type: 'INT' }); productsDataset.newRow(); productsDataset.setColumn(0, 'productId', 'P001'); productsDataset.setColumn(0, 'price', 1000); xapi.addDataset(productsDataset); async function writeXapi() { const xmlOutput = await writeString(xapi); console.log('생성된 XML: ', xmlOutput); } writeXapi(); ``` --- # @xapi-ts/core 이 패키지는 X-API 데이터를 다루기 위한 핵심 유틸리티 및 타입을 제공합니다. ## 설치 ```bash # npm npm install @xapi-ts/core # yarn yarn add @xapi-ts/core # pnpm pnpm add @xapi-ts/core # bun bun add @xapi-ts/core # deno deno add @xapi-ts/core ``` ## 사용법 `@xapi-ts/core`는 X-API 데이터를 다루기 위한 기본적인 클래스와 함수를 제공합니다. ### X-API XML 파싱 X-API XML 문자열을 `XapiRoot` 객체로 파싱할 수 있습니다: ```typescript import { parse, XapiRoot } from '@xapi-ts/core'; const xmlString = `<?xml version="1.0" encoding="UTF-8"?> <Root xmlns="http://www.tobesoft.com/platform/Dataset" ver="4000"> <Parameters> <Parameter id="service">stock</Parameter> <Parameter id="method">search</Parameter> </Parameters> </Root>`; async function parseXapi() { const xapi = await parse(xmlString); console.log('서비스:', xapi.getParameter('service')?.value); console.log('메서드:', xapi.getParameter('method')?.value); } parseXapi(); ``` ### XapiRoot 생성 및 조작 `XapiRoot` 객체를 생성하고 매개변수 및 데이터셋을 프로그래밍 방식으로 추가할 수 있습니다: ```typescript import { XapiRoot, Dataset } from '@xapi-ts/core'; const xapi = new XapiRoot(); // 매개변수 추가 xapi.addParameter({ id: 'resultCode', value: '0' }); xapi.addParameter({ id: 'resultMsg', value: 'SUCCESS' }); // 데이터셋 생성 및 추가 const usersDataset = new Dataset('users'); usersDataset.addColumn({ id: 'id', type: 'INT' }); usersDataset.addColumn({ id: 'name', type: 'STRING' }); let rowIdx: number; rowIdx = usersDataset.newRow(); usersDataset.setColumn(rowIdx, 'id', 1); usersDataset.setColumn(rowIdx, 'name', 'Alice'); rowIdx = usersDataset.newRow(); usersDataset.setColumn(rowIdx, 'id', 2); usersDataset.setColumn(rowIdx, 'name', 'Bob'); xapi.addDataset(usersDataset); console.log('XapiRoot 생성됨:', xapi); ``` ### XapiRoot를 XML로 직렬화 `XapiRoot` 객체를 X-API XML 문자열로 다시 직렬화할 수 있습니다: ```typescript import { write, XapiRoot, Dataset } from '@xapi-ts/core'; const xapi = new XapiRoot(); xapi.addParameter({ id: 'status', value: 'OK' }); const productsDataset = new Dataset('products'); productsDataset.addColumn({ id: 'productId', type: 'STRING' }); productsDataset.addColumn({ id: 'price', type: 'INT' }); productsDataset.newRow(); productsDataset.setColumn(0, 'productId', 'P001'); productsDataset.setColumn(0, 'price', 1000); xapi.addDataset(productsDataset); async function writeXapi() { const xmlOutput = await write(xapi); console.log('생성된 XML:\n', xmlOutput); } writeXapi(); ```