6、为什么导出的XML文件中含有空格
答:因为XML引擎是和W3C标准保持一致,所有会在元素的前、后加入空格,如果你想去除空格也可以,只需使用指定的 Tagset ,如下:
libname testxml xml 'C:\My Documents\XML\nospace.xml' tagset=tagsets.sasxmnsp;
proc copy in=sashelp out=testxml;
select class;
run;
这样产生的XML中就不会含有空格,如下
<?xml version="1.0" encoding="windows-1252" ?>
- <TABLE>
- <CLASS>
<Name>Alfred</Name>
<Sex>M</Sex>
<Age>14</Age>
<Height>69</Height>
<Weight>112.5</Weight>
</CLASS>
7、可以自定义自己的输出/输入格式么?
答:可以,通过使用Tagset,如XML引擎在默认输出时元素名采用字段名,如果你想自定义输出为标签名,可以如下使用:
/*产生数据集*/
data Singers;
input Name $ Style $;
label Name="SingerFirstName"
Style="MusicStyle";
datalines;
Tom Rock
Kris Country
Willie Country
Barbra Contemporary
Paul Rock
Randy Country
;
run;
/*定义TAGSET*/
proc template;
define tagset Tagsets.Uselabs;
parent = tagsets.sasxmog;
notes "Uses label instead of name for tags";
define event SASColumn;
start:
ndent;
put '<' ;
put TEXT / if cmp(XMLDATAFORM, "ATTRIBUTE");
put ' name="' / if cmp(XMLDATAFORM, "ATTRIBUTE");
put LABEL;
put '"' / if cmp(XMLDATAFORM, "ATTRIBUTE");
break;
finish:
xdent / if exists(MISSING);
break / if exists(MISSING);
put ' />' / if cmp(XMLDATAFORM, "ATTRIBUTE");
put CR / if cmp(XMLDATAFORM, "ATTRIBUTE");
xdent / if cmp(XMLDATAFORM, "ATTRIBUTE");
break / if cmp(XMLDATAFORM, "ATTRIBUTE");
put '</' ;
put LABEL;
put '>' ;
put CR;
xdent;
break;
end;
end; /* uselabs */
run;
/*输出XML文件*/
libname testxml xml 'C:\My Documents\XML\labels.xml' tagset=tagsets.uselabs;
proc copy in=work out=testxml;
select Singers;
run;