123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/***************************************************************************************
- * System Name :
- * Job Name : XML => DataSet 자동 변환
- * File Name : SSZFM00901.xjs
- * Creator :
- * Make Date :
- *
- * Description : XML을 DATASET으로 자동 변환한다.
- *---------------------------------------------------------------------------------------
- * Modify Date Modifier Modify Description
- *---------------------------------------------------------------------------------------
- *
- *---------------------------------------------------------------------------------------
- ****************************************************************************************/
- var gDsPrifixNm = "ds_data_"; //data 생성 명칭 prifix
- var gDsList = []; //생성한 DATASET 정보
- var gSelectDs = ""; //선택한 DS name
- var gSetParamObj = new Object();
- //=======================================================================================
- // Function
- //-------------------------------------------------------------------------------------------------------------------------------------------------------------
- /***********************************************************************************************
- * 함수명 : lf_convertXmlToDs
- * 설 명 : XML을 DS으로 변환한다.
- * argument : pXmlStr : XML(string type)
- pParamObj : Object
- pParamObj.pathYN - 'Y' / 'N' : dsvaluepath 컬럼 사용여부
- pParamObj.nullColumnYN - 'Y' / 'N' : xml 노드가 빈값일 경우 dataset 컬럼 생성 여부
- pParamObj.colNameCase - 'upper' / 'lower' / '' 또는 null : 컬럼명칭 upper(대문자), lower(소문자) 그 이외에 문자 그대로 설정
- * return Type : 'success' : 성공시
- 'error' : 실패시
- * 작성자 :
- ************************************************************************************************/
- function lf_convertXmlToDs(pXmlStr, pParamObj)
- {
- if(utlf_isNull(pXmlStr)){
- sysf_messageBox("XML 값이 없습니다.", "E");
- return "error";
- }
-
- var domParser = new DomParser;
- var domParser = domParser.parseFromString(pXmlStr);
-
- if (domParser == null){
- sysf_messageBox("XML 형식이 잘못 되었습니다.", "E");
- return "error";
- }
-
- //파라미터 옵션세팅
- if(!utlf_isNull(pParamObj)){
- gSetParamObj.pathYN = utlf_isNull(pParamObj.pathYN) ? 'Y' : pParamObj.pathYN; //dsvaluepath 컬럼 사용여부 (default 'Y')
- gSetParamObj.nullColumnYN = utlf_isNull(pParamObj.nullColumnYN) ? 'Y' : pParamObj.nullColumnYN; //xml 노드가 빈값일 경우 dataset 컬럼 생성 여부
- gSetParamObj.colNameCase = utlf_isNull(pParamObj.colNameCase) ? '' : pParamObj.colNameCase //dataset 컬럼 명칭을 대문자/소문자 처리 여부
- }else{
- gSetParamObj.pathYN = 'Y';
- gSetParamObj.nullColumnYN = 'N';
- gSetParamObj.colNameCase = "";
- }
-
- var tagNm = domParser.documentElement.nodeName;
- //var nodes = domParser.getElementsByTagName(tagNm);
- var nodes = domParser.getElementsByPath("/" + tagNm);
-
-
- var sValue = lf_parseXml(nodes, nodes.nodes, pParamObj);
-
- //trace("tagNm :"+tagNm+' / '+nodes+' / '+sValue);
- if(!sValue){ //변환 실패시 만들어진 dataset 삭제 처리
- for(var i=gDsList.length-1; i >= 0; i--){
- var removeObj = this.removeChild(this.objects[gDsList[i]].name);
- delete removeObj;
- removeObj = null;
- }
- gDsList = [];
-
- sysf_messageBox("변환이 실패하였습니다.", "E");
- return "error";
- }
-
- //데이터가 없는 DS 삭제
- for(var i=gDsList.length-1; i >= 0; i--){
- if(this.objects[gDsList[i]].colcount == 0 || (this.objects[gDsList[i]].colcount == 1 && this.objects[gDsList[i]].colinfos[0].name == "dsvaluepath")){
- var tmpObj = this.removeChild(this.objects[gDsList[i]].name);
- delete tmpObj;
- tmpObj = null;
- }
- }
- gDsList = [];
-
- return "success";
- }
- /***********************************************************************************************
- * 함수명 : lf_parseXml
- * 설 명 : DOM객체를 DS으로 변환한다.
- * argument : pChilds : xml nodelist 객체
- pTagNm : xml node name
- * return Type : true : 변환 성공시
- false : 변환 실패시
- * 작성자 :
- ************************************************************************************************/
- function lf_parseXml(pChilds, pTagNm){
- var sReturnValue = true;
- try{
- var nAddRow = 0;
- var rtn = this.all[gDsPrifixNm+pTagNm];
- var pathColumn;
- var valuePath;
- var sNodeName;
- if(!rtn) {
- var objDs = new Dataset;
- //trace("lf_parseXml1 "+ pChilds+' / '+pTagNm+' / '+rtn+' / '+objDs);
- var sDsNameInsert = gDsPrifixNm+pTagNm;
- objDs.name = sDsNameInsert;
- this.addChild(sDsNameInsert, objDs);
- gDsList.push(gDsPrifixNm+pTagNm);
- }else{
- objDs = this.all[gDsPrifixNm+pTagNm];
- //trace("lf_parseXml2 "+ pChilds+' / '+pTagNm+' / '+rtn+' / '+objDs);
- if(gSelectDs != pTagNm) objDs.clearData(); //dsset 초기화
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
- valuePath = pChilds[0].nodePath.split("/"+pChilds[0].nodeName);
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath[0]);
- }
- }
-
- objDs.enableevent = false;
-
- for (var i=0;i<pChilds.length;i++){
- var grandChilds = pChilds[i].childNodes;
-
- if(gSetParamObj.colNameCase == "upper"){
- sNodeName = pChilds[i].nodeName.toUpperCase(); //대문자 처리
- }else if(gSetParamObj.colNameCase == "lower"){
- sNodeName = pChilds[i].nodeName.toLowerCase();//소문자 처리
- }else{
- sNodeName = pChilds[i].nodeName //xml 문자 그대로 처리
- }
-
- if((pChilds[i].childNodes.length > 1 && pChilds[i].nodeType == 1) || grandChilds.length >= 1 && grandChilds[0].nodeType == 1){
- lf_parseXml(grandChilds, sNodeName);
- }else{
-
- if(objDs.rowcount == 0){ //dataset에 row가 없는 경우
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
-
- valuePath = pChilds[i].nodePath.split("/"+sNodeName);
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath[0]);
- }
- }
-
- if(gSetParamObj.nullColumnYN == 'Y' || (gSetParamObj.nullColumnYN == 'N' && !utlf_isNull(pChilds[i].textContent))){
- var objColumn = objDs.getColumnInfo(sNodeName);
-
- if(utlf_isNull(objColumn)){
- objDs.addColumn(sNodeName,"string");
- }
- objDs.setColumn(nAddRow, sNodeName, pChilds[i].textContent);
- }
- gSelectDs = pTagNm;
- }
- }
- objDs.enableevent = true;
- sReturnValue = true;
- }catch(e){
- sReturnValue = false;
- gCheckClear = true;
- }
-
- return sReturnValue;
- }
- /***********************************************************************************************
- * 함수명 : lf_convertXmlToDs2
- * 설 명 : XML을 DS으로 변환한다.
- * argument : pXmlStr : XML(string type)
- pParamObj : Object
- pParamObj.pathYN - 'Y' / 'N' : dsvaluepath 컬럼 사용여부
- pParamObj.nullColumnYN - 'Y' / 'N' : xml 노드가 빈값일 경우 dataset 컬럼 생성 여부
- pParamObj.colNameCase - 'upper' / 'lower' / '' 또는 null : 컬럼명칭 upper(대문자), lower(소문자) 그 이외에 문자 그대로 설정
- * return Type : 'success' : 성공시
- 'error' : 실패시
- * 작성자 :
- ************************************************************************************************/
- function lf_convertXmlToDs2(pXmlStr, pParamObj)
- {
- if(utlf_isNull(pXmlStr)){
- sysf_messageBox("XML 값이 없습니다.", "E");
- return "error";
- }
-
- var domParser = new DomParser;
- var domParser = domParser.parseFromString(pXmlStr);
-
- if (domParser == null){
- sysf_messageBox("XML 형식이 잘못 되었습니다.", "E");
- return "error";
- }
-
- //파라미터 옵션세팅
- if(!utlf_isNull(pParamObj)){
- gSetParamObj.pathYN = utlf_isNull(pParamObj.pathYN) ? 'Y' : pParamObj.pathYN; //dsvaluepath 컬럼 사용여부 (default 'Y')
- gSetParamObj.nullColumnYN = utlf_isNull(pParamObj.nullColumnYN) ? 'Y' : pParamObj.nullColumnYN; //xml 노드가 빈값일 경우 dataset 컬럼 생성 여부
- gSetParamObj.colNameCase = utlf_isNull(pParamObj.colNameCase) ? '' : pParamObj.colNameCase //dataset 컬럼 명칭을 대문자/소문자 처리 여부
- }else{
- gSetParamObj.pathYN = 'Y';
- gSetParamObj.nullColumnYN = 'N';
- gSetParamObj.colNameCase = "";
- }
-
- var tagNm = domParser.documentElement.nodeName;
- //var nodes = domParser.getElementsByTagName(tagNm);
- var nodes = domParser.getElementsByPath("/" + tagNm);
-
- var sValue = lf_parseXml2(nodes, nodes.nodes, pParamObj);
-
- if(!sValue){ //변환 실패시 만들어진 dataset 삭제 처리
- for(var i=gDsList.length-1; i >= 0; i--){
- var removeObj = this.removeChild(this.objects[gDsList[i]].name);
- delete removeObj;
- removeObj = null;
- }
- gDsList = [];
-
- sysf_messageBox("변환이 실패하였습니다.", "E");
- return "error";
- }
-
- //데이터가 없는 DS 삭제
- for(var i=gDsList.length-1; i >= 0; i--){
- if(this.objects[gDsList[i]].colcount == 0 || (this.objects[gDsList[i]].colcount == 1 && this.objects[gDsList[i]].colinfos[0].name == "dsvaluepath")){
- var tmpObj = this.removeChild(this.objects[gDsList[i]].name);
- delete tmpObj;
- tmpObj = null;
- }
- }
- gDsList = [];
-
- return "success";
- }
- /***********************************************************************************************
- * 함수명 : lf_parseXml2
- * 설 명 : DOM객체를 DS으로 변환한다.
- * argument : pChilds : xml nodelist 객체
- pTagNm : xml node name
- * return Type : true : 변환 성공시
- false : 변환 실패시
- * 작성자 :
- ************************************************************************************************/
- function lf_parseXml2(pChilds, pTagNm){
- var sReturnValue = true;
- try{
- var nAddRow = 0;
- var rtn = this.all[gDsPrifixNm+pTagNm];
- var pathColumn;
- var valuePath;
- var sNodeName;
-
- if(!rtn) {
- var objDs = new Dataset;
- var sDsNameInsert = gDsPrifixNm+pTagNm;
- objDs.name = sDsNameInsert;
- this.addChild(sDsNameInsert, objDs);
- gDsList.push(gDsPrifixNm+pTagNm);
- }else{
- objDs = this.all[gDsPrifixNm+pTagNm];
- if(gSelectDs != pTagNm) objDs.clearData(); //dsset 초기화
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
- valuePath = pChilds[0].nodePath.split("/"+pChilds[0].nodeName);
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath[0]);
- }
- }
-
- objDs.enableevent = false;
- var flagChild = false;
-
- for (var i=0;i<pChilds.length;i++){
- var grandChilds = pChilds[i].childNodes;
-
- if(gSetParamObj.colNameCase == "upper"){
- sNodeName = pChilds[i].nodeName.toUpperCase(); //대문자 처리
- }else if(gSetParamObj.colNameCase == "lower"){
- sNodeName = pChilds[i].nodeName.toLowerCase();//소문자 처리
- }else{
- sNodeName = pChilds[i].nodeName //xml 문자 그대로 처리
- }
-
- if((pChilds[i].childNodes.length > 1 && pChilds[i].nodeType == 1) || grandChilds.length >= 1 && grandChilds[0].nodeType == 1){
- flagChild = true;
- lf_parseXml2(grandChilds, sNodeName);
- }else{
-
- //if(objDs.rowcount == 0){ //dataset에 row가 없는 경우
- if(objDs.rowcount == 0 || (objDs.rowcount == 1 && flagChild == true && objDs.getColumn(0, "dsvaluepath") != pChilds[i].nodePath.split("/"+sNodeName)[0]) ){ //dataset에 row가 있으면서 dsvaluepath가 다를경우
- flagChild = false;
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
-
- valuePath = pChilds[i].nodePath.split("/"+sNodeName);
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath[0]);
- }
- }
-
- if(gSetParamObj.nullColumnYN == 'Y' || (gSetParamObj.nullColumnYN == 'N' && !utlf_isNull(pChilds[i].textContent))){
- var objColumn = objDs.getColumnInfo(sNodeName);
-
- if(utlf_isNull(objColumn)){
- objDs.addColumn(sNodeName,"string");
- }
- objDs.setColumn(nAddRow, sNodeName, pChilds[i].textContent);
- }
- gSelectDs = pTagNm;
- }
- }
- objDs.enableevent = true;
- sReturnValue = true;
- }catch(e){
- sReturnValue = false;
- gCheckClear = true;
- }
-
- return sReturnValue;
- }
- function lf_convertXmlToDs3(pXmlStr, pParamObj, pTargetNode ) {
- if(utlf_isNull(pXmlStr)){
- sysf_messageBox("XML 값이 없습니다.", "E");
- return "error";
- }
-
- var domParser = new DomParser;
- var domParser = domParser.parseFromString(pXmlStr);
-
- if (domParser == null){
- sysf_messageBox("XML 형식이 잘못 되었습니다.", "E");
- return "error";
- }
-
- //파라미터 옵션세팅
- if(!utlf_isNull(pParamObj)){
- gSetParamObj.pathYN = utlf_isNull(pParamObj.pathYN) ? 'Y' : pParamObj.pathYN; //dsvaluepath 컬럼 사용여부 (default 'Y')
- gSetParamObj.nullColumnYN = utlf_isNull(pParamObj.nullColumnYN) ? 'Y' : pParamObj.nullColumnYN; //xml 노드가 빈값일 경우 dataset 컬럼 생성 여부
- gSetParamObj.colNameCase = utlf_isNull(pParamObj.colNameCase) ? '' : pParamObj.colNameCase //dataset 컬럼 명칭을 대문자/소문자 처리 여부
- }else{
- gSetParamObj.pathYN = 'Y';
- gSetParamObj.nullColumnYN = 'N';
- gSetParamObj.colNameCase = "";
- }
-
- var tagNm = domParser.documentElement.nodeName;
-
- var nodes ;
- if(utlf_isNull(pTargetNode)) {
- pTargetNode = "/" + tagNm;
- nodes = domParser.getElementsByPath(tagNm);
- }
- else {
- nodes = domParser.getElementsByPath(pTargetNode);
- }
-
-
- var nodeName = nodes[0].nodeName;
- //nodeName = nodeName.substr(1);
- var sValue = lf_parseXml3(nodes, "");
-
- if(!sValue){ //변환 실패시 만들어진 dataset 삭제 처리
- for(var i=gDsList.length-1; i >= 0; i--){
- var removeObj = this.removeChild(this.objects[gDsList[i]].name);
- delete removeObj;
- removeObj = null;
- }
- gDsList = [];
-
- sysf_messageBox("변환이 실패하였습니다.", "E");
- return "error";
- }
-
- //데이터가 없는 DS 삭제
- for(var i=gDsList.length-1; i >= 0; i--){
- if(this.objects[gDsList[i]].colcount == 0 || (this.objects[gDsList[i]].colcount == 1 && this.objects[gDsList[i]].colinfos[0].name == "dsvaluepath")){
- var tmpObj = this.removeChild(this.objects[gDsList[i]].name);
- delete tmpObj;
- tmpObj = null;
- }
- }
- gDsList = [];
-
- return "success";
- }
- /***********************************************************************************************
- * 함수명 : lf_parseXml
- * 설 명 : DOM객체를 DS으로 변환한다.
- * argument : pChilds : xml nodelist 객체
- pTagNm : xml node name
- * return Type : true : 변환 성공시
- false : 변환 실패시
- * 작성자 :
- ************************************************************************************************/
- function lf_parseXml3(pChilds, pTagNm){
- var sReturnValue = true;
- try{
- var nAddRow = 0;
- var rtn = this.all[gDsPrifixNm+pTagNm];
- var pathColumn;
- var valuePath;
- var sNodeName;
-
- if(!rtn) {
- var objDs = new Dataset;
- var sDsNameInsert = gDsPrifixNm+pTagNm;
- objDs.name = sDsNameInsert;
- this.addChild(sDsNameInsert, objDs);
- gDsList.push(gDsPrifixNm+pTagNm);
- }else{
- objDs = this.all[gDsPrifixNm+pTagNm];
-
- if(gSelectDs != pTagNm) objDs.clearData(); //dsset 초기화
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
- valuePath = pChilds[0].nodePath.substr(0, pChilds[0].nodePath.lastIndexOf("/"+pChilds[0].nodeName));
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath);
- }
- }
-
- objDs.enableevent = false;
-
- for (var i=0;i<pChilds.length;i++){
- var grandChilds = pChilds[i].childNodes;
-
- if(gSetParamObj.colNameCase == "upper"){
- sNodeName = pChilds[i].nodeName.toUpperCase(); //대문자 처리
- }else if(gSetParamObj.colNameCase == "lower"){
- sNodeName = pChilds[i].nodeName.toLowerCase();//소문자 처리
- }else{
- sNodeName = pChilds[i].nodeName //xml 문자 그대로 처리
- }
- if((pChilds[i].childNodes.length > 1 && pChilds[i].nodeType == 1) || grandChilds.length >= 1 && grandChilds[0].nodeType == 1){
- lf_parseXml3(grandChilds, pTagNm + (pTagNm == "" ? "" : "_") + sNodeName);
- }else{
- if(objDs.rowcount == 0){ //dataset에 row가 없는 경우
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
- valuePath = pChilds[i].nodePath.substr(0, pChilds[i].nodePath.lastIndexOf("/"+sNodeName));
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath);
- }
- }
-
- if(gSetParamObj.nullColumnYN == 'Y' || (gSetParamObj.nullColumnYN == 'N' && !utlf_isNull(pChilds[i].textContent))){
- var objColumn = objDs.getColumnInfo(sNodeName);
-
- if(utlf_isNull(objColumn)){
- objDs.addColumn(sNodeName,"string");
- }
- var v_val = objDs.getColumn(nAddRow, sNodeName);
- if (utlf_isNull(v_val)) {
- objDs.setColumn(nAddRow, sNodeName, pChilds[i].textContent);
- }
- }
- gSelectDs = pTagNm;
- }
- }
- objDs.enableevent = true;
- sReturnValue = true;
- }catch(e){
- sReturnValue = false;
- gCheckClear = true;
- }
-
- return sReturnValue;
- }
- function lf_convertXmlToDs4(pXmlStr, pParamObj, pTargetNode )
- {
- if(utlf_isNull(pXmlStr)){
- sysf_messageBox("XML 값이 없습니다.", "E");
- return "error";
- }
-
- var domParser = new DomParser;
- var domParser = domParser.parseFromString(pXmlStr);
-
- if (domParser == null){
- sysf_messageBox("XML 형식이 잘못 되었습니다.", "E");
- return "error";
- }
-
- //파라미터 옵션세팅
- if(!utlf_isNull(pParamObj)){
- gSetParamObj.pathYN = utlf_isNull(pParamObj.pathYN) ? 'Y' : pParamObj.pathYN; //dsvaluepath 컬럼 사용여부 (default 'Y')
- gSetParamObj.nullColumnYN = utlf_isNull(pParamObj.nullColumnYN) ? 'Y' : pParamObj.nullColumnYN; //xml 노드가 빈값일 경우 dataset 컬럼 생성 여부
- gSetParamObj.colNameCase = utlf_isNull(pParamObj.colNameCase) ? '' : pParamObj.colNameCase //dataset 컬럼 명칭을 대문자/소문자 처리 여부
- }else{
- gSetParamObj.pathYN = 'Y';
- gSetParamObj.nullColumnYN = 'N';
- gSetParamObj.colNameCase = "";
- }
-
- var tagNm = domParser.documentElement.nodeName;
- var nodes ;
-
- if(utlf_isNull(pTargetNode)) {
- pTargetNode = "/" + tagNm;
- nodes = domParser.getElementsByPath(pTargetNode);
- }
- else {
- nodes = domParser.getElementsByPath(pTargetNode);
- }
-
-
- var nodeName = nodes[0].nodeName;
- //nodeName = nodeName.substr(1);
- var sValue = lf_parseXml4(nodes, "");
-
- if(!sValue){ //변환 실패시 만들어진 dataset 삭제 처리
- for(var i=gDsList.length-1; i >= 0; i--){
- var removeObj = this.removeChild(this.objects[gDsList[i]].name);
- delete removeObj;
- removeObj = null;
- }
- gDsList = [];
-
- sysf_messageBox("변환이 실패하였습니다.", "E");
- return "error";
- }
-
- //데이터가 없는 DS 삭제
- for(var i=gDsList.length-1; i >= 0; i--){
- if(this.objects[gDsList[i]].colcount == 0 || (this.objects[gDsList[i]].colcount == 1 && this.objects[gDsList[i]].colinfos[0].name == "dsvaluepath")){
- var tmpObj = this.removeChild(this.objects[gDsList[i]].name);
- delete tmpObj;
- tmpObj = null;
- }
- }
- gDsList = [];
-
- return "success";
- }
- /***********************************************************************************************
- * 함수명 : lf_parseXml
- * 설 명 : DOM객체를 DS으로 변환한다.
- * argument : pChilds : xml nodelist 객체
- pTagNm : xml node name
- * return Type : true : 변환 성공시
- false : 변환 실패시
- * 작성자 :
- ************************************************************************************************/
- function lf_parseXml4(pChilds, pTagNm){
- var sReturnValue = true;
- try{
- var nAddRow = 0;
- var rtn = this.all[gDsPrifixNm+pTagNm];
- var pathColumn;
- var valuePath;
- var sNodeName;
- if(utlf_isNull(rtn)) {
-
- var objDs = new Dataset;
- var sDsNameInsert = gDsPrifixNm+pTagNm;
- objDs.name = sDsNameInsert;
- this.addChild(sDsNameInsert, objDs);
- gDsList.push(gDsPrifixNm+pTagNm);
- }else{
- objDs = this.all[gDsPrifixNm+pTagNm];
-
- if(gSelectDs != pTagNm) objDs.clear(); //dsset 초기화
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
- valuePath = pChilds[0].nodePath.substr(0, pChilds[0].nodePath.lastIndexOf("/"+pChilds[0].nodeName));
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath);
- }
- }
-
- objDs.enableevent = false;
-
- for (var i=0;i<pChilds.length;i++){
- var grandChilds = pChilds[i].childNodes;
-
- if(gSetParamObj.colNameCase == "upper"){
- sNodeName = pChilds[i].nodeName.toUpperCase(); //대문자 처리
- }else if(gSetParamObj.colNameCase == "lower"){
- sNodeName = pChilds[i].nodeName.toLowerCase();//소문자 처리
- }else{
- sNodeName = pChilds[i].nodeName //xml 문자 그대로 처리
- }
- if((pChilds[i].childNodes.length > 1 && pChilds[i].nodeType == 1) || grandChilds.length >= 1 && grandChilds[0].nodeType == 1){
- lf_parseXml4(grandChilds, pTagNm + (pTagNm == "" ? "" : "_") + sNodeName);
- }else{
- if(objDs.rowcount == 0){ //dataset에 row가 없는 경우
- nAddRow = objDs.addRow();
-
- if(gSetParamObj.pathYN == 'Y'){ //dsvaluepath 컬럼을 사용할 경우
- pathColumn = objDs.getColumnInfo("dsvaluepath");
-
- if(utlf_isNull(pathColumn)){
- objDs.addColumn("dsvaluepath","string");
- }
- valuePath = pChilds[i].nodePath.substr(0, pChilds[i].nodePath.lastIndexOf("/"+sNodeName));
- objDs.setColumn(nAddRow, "dsvaluepath", valuePath);
- }
- }
-
- if(gSetParamObj.nullColumnYN == 'Y' || (gSetParamObj.nullColumnYN == 'N' && !utlf_isNull(pChilds[i].textContent))){
- var objColumn = objDs.getColumnInfo(sNodeName);
-
- if(utlf_isNull(objColumn)){
- objDs.addColumn(sNodeName,"string");
- }
- objDs.setColumn(nAddRow, sNodeName, pChilds[i].textContent);
- }
- gSelectDs = pTagNm;
- }
- }
- objDs.enableevent = true;
- sReturnValue = true;
- }catch(e){
- sReturnValue = false;
- gCheckClear = true;
- }
-
- return sReturnValue;
- }
- ]]></Script>
|