SAS XMLMap/编写格式为的XML文件

SAS XMLMap/编写格式为的XML文件,sas,Sas,我想通过读取SAS数据集并使用SAS自己的数字格式XMLV2 XMLMaps来编写XML文件 在下面的代码示例中,我尝试了“Z3”格式(将前导零添加到整数)。但其他数字格式如“12.2”(长度12,小数点后2位)也不起作用 在SAS XMLV2 XMLMaps中应用格式通常通过 <FORMAT> 列定义中的标记。这对于日期格式很好,但是对于数字格式似乎不行——或者我忘了一些东西 /*Minimal SAS Code Example:*/ filename xmlmap tem

我想通过读取SAS数据集并使用SAS自己的数字格式XMLV2 XMLMaps来编写XML文件

在下面的代码示例中,我尝试了“Z3”格式(将前导零添加到整数)。但其他数字格式如“12.2”(长度12,小数点后2位)也不起作用

在SAS XMLV2 XMLMaps中应用格式通常通过

<FORMAT>

列定义中的标记。这对于日期格式很好,但是对于数字格式似乎不行——或者我忘了一些东西

/*Minimal SAS Code Example:*/

filename xmlmap temp;
filename xmlout temp;

/*Define SAS XMLV2 XMLMap:*/
data _null_;
   file xmlmap encoding='UTF-8';
   infile datalines4;
   input;
   put _infile_;
datalines4;
<?xml version="1.0" encoding="UTF-8"?>
<SXLEMAP name="TEST" version="2.1">

   <OUTPUT>
      <TABLEREF name="TEST" />
   </OUTPUT>

   <NAMESPACES count="0"/>

   <TABLE name="TEST">
      <TABLE-PATH syntax="XPath">/Root</TABLE-PATH>

      <COLUMN name="ORIGINAL">
         <PATH syntax="XPath">/Root/ORIGINAL</PATH>
         <TYPE>numeric</TYPE>
         <DATATYPE>integer</DATATYPE>
      </COLUMN>

      <COLUMN name="FORMATED">
         <PATH syntax="XPath">/Root/FORMATED</PATH>
         <TYPE>numeric</TYPE>
         <DATATYPE>integer</DATATYPE>
         <FORMAT width="3" ndec="0">Z3</FORMAT>
      </COLUMN>

   </TABLE>

</SXLEMAP>
;;;;

/*Define Input Data Set:*/
data WORK.TEST;
   infile datalines;
   input
      ORIGINAL :8.
      FORMATED :8.
      ;
   format FORMATED Z3.0;
datalines;
4 4
10 10
;
run;

/*Link XMLMap with the Input Data Set and Output XML-File*/
libname XMLTEST
   xmlv2
   xmlfileref=xmlout
   xmltype=xmlmap
   xmlmap=xmlmap
   xmlencoding='UTF-8'
   ;

/*Write Data Set to XML-File:*/
data XMLTEST.TEST;
   set WORK.TEST;
run;

/*Print XML-File to Log:*/
data _null_;
   infile xmlout;
   input;
   put _infile_;
run;

filename xmlmap clear;
filename xmlout clear;
/*最小SAS代码示例:*/
文件名xmlmap temp;
文件名xmlout temp;
/*定义SAS XMLV2 XMLMap:*/
数据为空;
文件xmlmap encoding='UTF-8';
填充数据线4;
输入;
把"填入";;
数据线4;
/根
/根/原件
数字的
整数
/根/格式化
数字的
整数
Z3
;;;;
/*定义输入数据集:*/
数据工作测试;
填充数据线;
输入
原件:8。
格式:8。
;
Z3.0格式;
数据线;
4 4
10 10
;
跑
/*将XMLMap与输入数据集和输出XML文件链接*/
libname-XMLTEST
xmlv2
xmlfileref=xmlout
xmltype=xmlmap
xmlmap=xmlmap
xmlcodencing='UTF-8'
;
/*将数据集写入XML文件:*/
数据XMLTEST.TEST;
设置工作测试;
跑
/*将XML文件打印到日志:*/
数据为空;
填充xmlout;
输入;
把"填入";;
跑
文件名:地图清晰;
文件名xmlout清除;
预期结果(XML文件)-此处,节点中的前导零已格式化:

 <Root>
 <ORIGINAL>4</ORIGINAL>
 <FORMATED>004</FORMATED>
 </Root>
 <Root>
 <ORIGINAL>10</ORIGINAL>
 <FORMATED>010</FORMATED>
 </Root>
 <Root>
 <ORIGINAL>4</ORIGINAL>
 <FORMATED>4</FORMATED>
 </Root>
 <Root>
 <ORIGINAL>10</ORIGINAL>
 <FORMATED>10</FORMATED>
 </Root>

4.
004
10
010
实际结果(XML文件)-格式化的节点中没有前导零:

 <Root>
 <ORIGINAL>4</ORIGINAL>
 <FORMATED>004</FORMATED>
 </Root>
 <Root>
 <ORIGINAL>10</ORIGINAL>
 <FORMATED>010</FORMATED>
 </Root>
 <Root>
 <ORIGINAL>4</ORIGINAL>
 <FORMATED>4</FORMATED>
 </Root>
 <Root>
 <ORIGINAL>10</ORIGINAL>
 <FORMATED>10</FORMATED>
 </Root>

4.
4.
10
10

SXLEMAP Column元素定义传入xml如何映射到相应的SAS数据集列属性

DATATYPE元素告诉引擎在xml输出中输出一个整数值——这将是未格式化的。映射将通知xml使用者它应该如何处理解析的数据值

如果重新读取创建的xml

data in;
  set xmltest.test;
run;
您将看到地图的元素值
Z3
格式不正确。值应该正好是
Z
,格式的修饰符来自
width
ndec
属性


我不确定在一个xml文件中,如何用数据的SAS元数据为xmldata节点排序。

SXLEMAP Column元素定义传入xml如何映射到适当的SAS数据集列属性

DATATYPE元素告诉引擎在xml输出中输出一个整数值——这将是未格式化的。映射将通知xml使用者它应该如何处理解析的数据值

如果重新读取创建的xml

data in;
  set xmltest.test;
run;
您将看到地图的元素值
Z3
格式不正确。值应该正好是
Z
,格式的修饰符来自
width
ndec
属性

我不确定在单个xml文件中,如何用数据的SAS元数据作为xmldata节点的开头