X++에서 XML 파일로 데이터 저장하고 읽기
오늘은 AX의 데이터를 XML 파일로 저장 후 다시 데이터를 읽어 오는 샘플 코드를 보여 드릴까 합니다. 외부 시스템과의 데이터 교환을 DB-To-DB 형태로 교환 할 수도 있지만, 특정 시스템들은 XML 파일로 주고 받을 수 있기 때문에 시스템 구축시 아래 코드가 도움이 되었으면 좋겠습니다.
-
VendTable에서 데이터를 읽어와 vendList.xml 파일로 저장
static void ZSPK_CreateXMLFile(Args _args)
{
XmlDocument doc;
XmlElement nodeXml;
XmlElement nodeTable;
XmlElement nodeAccount;
XmlElement nodeName;
VendTable vendTable;
Filename fileName;
int i;
#WinAPI
;
doc = XmlDocument::newBlank();
nodeXml = doc.createElement('xml');
doc.appendChild(nodeXml);
while select vendTable order by vendTable.AccountNum
{
i++;
nodeTable = doc.createElement(tableStr(VendTable));
nodeTable.setAttribute(fieldStr(VendTable, RecId), int642str(vendTable.RecId));
nodeXml.appendChild(nodeTable);
nodeAccount = doc.createElement(fieldStr(VendTable, AccountNum));
nodeAccount.appendChild(doc.createTextNode(vendTable.AccountNum));
nodeTable.appendChild(nodeAccount);
nodeName = doc.createElement(fieldStr(vendTable, ZSPK_Name));
nodeName.appendChild(doc.createTextNode(vendTable.ZSPK_Name));
nodeTable.appendChild(nodeName);
if (i == 5) break;
}
fileName = WinAPI::getFolderPath(#CSIDL_PERSONAL);
fileName += '\\vendList.xml';
doc.save(fileName);
info("완료");
}
-
vendList.xml 파일을 읽어오는 코드 샘플 코드
static void ZSPK_DataSetRead(Args _args)
{
System.Data.DataSet dataSet;
System.Data.DataTableCollection dataTableCollection;
System.Data.DataTable dataTable;
System.Data.DataRowCollection dataRowCollection;
System.Data.DataColumnCollection dataColumnCollection;
System.Data.DataRow dataRow;
System.Data.DataColumn dataColumn;
int i,j,TotalCol,TotalRow;
str _xml;
;
dataSet = new System.Data.DataSet();
dataSet.ReadXml(@"C:\Users\Administrator\Documents\vendList.xml");
dataTableCollection = dataSet.get_Tables();
dataTable = dataTableCollection.get_Item(0);
dataColumnCollection = dataTable.get_Columns();
dataRowCollection = dataTable.get_Rows();
TotalRow = dataRowCollection.get_Count();
TotalCol = dataColumnCollection.get_Count();
for (i=0;i < TotalRow; i++)
{
dataRow = dataRowCollection.get_Item(i);
//setprefix(CLRInterop::getAnyTypeForObject(DataRow.get_item(i)));
for (j=0;j < TotalCol; j++)
{
//dataRow = dataRowCollection.get_item(i);
if (dataRow.IsNull(j))
_xml = 'null';
else
_xml = dataRow.get_Item(j);
info(strFmt("%1 - %2 - %3", i, j, _xml));
}
}
}
'Dynamics AX > Development' 카테고리의 다른 글
자주 쓰는 X++ 기본 내장 함수 정리 (0) | 2014.10.28 |
---|---|
Split String in Dynamics AX (0) | 2014.09.10 |
X++에서 직접 SQL 실행하기 (0) | 2014.07.29 |
Create Dynamic Table in the X++ (0) | 2013.09.24 |
Query Object의 내용을 문자열로 Export (0) | 2013.09.24 |