SAS XMLMap / Write XML-File With Format



我想通过读取 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;

预期结果(XML 文件( - 此处在节点中带有前导零 格式化:

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

实际结果(XML 文件(- 节点中没有前导零 格式化:

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

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

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

如果重新读取创建的 xml

data in;
  set xmltest.test;
run;

您将看到地图的元素值不正确Z3格式。 该值应刚Z ,格式的修饰符来自 <FORMAT> widthndec 属性。

我不确定在单个 xml 文件中如何用数据的 SAS 元数据在 xmldata 节点前面

最新更新