如何在SAS代码中添加回车符?

时间:2011-03-24 05:06:57

标签: sas

我想在SAS代码中添加回车符\ linebreak \ linefeed,以便输出xml中有返回。

data test_JK_merge;
    length body $ 1500;
    set test_JK;
    body=strip(termEntry_st)||"
"||strip(TS_Status)||strip(langset_en_st)||strip(nttG)||strip(langset_en_ed)||strip(termEntry_ed);
    /*merged=strip(termEntry_st)||"'0A'X"||strip(TS_Status)||"<br />"||strip(langset_en_st)||"<br />"||strip(nttG)||"<br />"||strip(langset_en_ed)||"<br />"||strip(termEntry_ed);*/
    keep body;
run;

libname outxml xml "U:\Projects\...\test2.mtf.xml";

data outxml.text;
    set test_JK_merge;
run;

我尝试了不同的方法,例如&amp;#13;,'OA'X,&amp;#10;,&lt; br /&gt;等 但它们都没有奏效。有人可以帮忙吗?

实际结果:

<TEXT>
  <body><termEntry id=1>&#13;<note type="TS_Status">ELC TERM present in OCS_Help_xml OCS_properties</note><langSet lang="eng-us">ntig><termGrp><term>ARM</term></termGrp></ntig></langSet></termEntry></body> 
 </TEXT>

预期结果:

    <TEXT>
      <body><termEntry id=1>
<note type="TS_Status">ELC TERM present in OCS_Help_xml OCS_properties</note><langSet lang="eng-us">ntig><termGrp><term>ARM</term></termGrp></ntig></langSet></termEntry></body> 
     </TEXT>

1 个答案:

答案 0 :(得分:3)

我实际上有点惊讶你得到了

<body><termEntry ...

使用LIBNAME XML。我可能倾向于从DATA步骤手动生成XML。

带有style = generic(默认值)的LIBNAME XML将生成表单

的输出
<dsname>
   <columnname>column value</columnname>
</dsname>
<dsname>
   <columnname>column value</columnname>
</dsname>
..etc...

,即输入文件中每条记录的一个标记<dsname>,其下面有一个标记,用于数据集中的每个变量。为了使SAS能够在其中读取结果,它将转义任何值,以便如果数据集中的变量是一个字符串并且包含任何字符<&等,它就赢了“ t“混淆”XML。因此,在您的情况下,数据集中的变量具有类似

的值
<termEntry id=1>...</termEntry>

然后我希望libname XML的输出类似于

<TEXT>
    <body> &lt;termEntry id=1&gt;&lt;/termEntry&gt; </body>
</TEXT

选项似乎要么是要了解如何将XMLMap与LIBNAME XML一起使用以生成所需的XML(可能无法取决于您拥有的SAS版本),或者使用DATA手动生成XML步骤:

data test_JK;
    termEntry_st = "<termEntry id=1>";
    termEntry_ed = "</termEntry>";
    TS_Status = "<note type='TS_Status'>ELC TERM present in OCS_Help_xml OCS_properties</note>";
    langset_en_st = "<langSet lang='eng-us'>";
    langset_en_ed = "</langSet>";
    nttG = "<ntig><termGrp><term>ARM</term></termGrp></ntig>";

data _null_;
    set test_JK end=e;
    file "tmp.xml";

    if _n_ eq 1 then do;
       put "<something>";
    end;

    put "  <text>";
    put "    <body>" +(-1) termEntry_st;
    put TS_Status +(-1) langset_en_st +(-1) nttG +(-1) langset_en_ed +(-1) termEntry_ed  + (-1) "</body>";
    put "  </text>";

    if e then do;
       put "</something>";
    end;
 run;