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

标签 sas

我想在SAS代码中添加回车符\换行符\换行符,这样输出的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;

我尝试过不同的方法,例如 、'OA'X、 、
等 但它们都不起作用。有人可以帮忙吗?

实际结果:

<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>

最佳答案

事实上,我对你得到的结果感到有点惊讶

<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 能够读回结果,它将转义任何值,因此,如果数据集中的变量是字符串并包含任何字符 < , &等等,它不会“混淆”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;

关于sas - 如何在SAS代码中添加回车符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5415013/

相关文章:

xml - 替换 SAS 宏变量中的引号

Pandas read_sas "ValueError: Length of values does not match length of index"

sas - 为什么我在这个简单的查询中收到错误 : ERROR: The value 02 is not a valid SAS name.

sas - 检查项目是否在 SAS 列表中

oracle - 在 UTF-8 session 中从 SAS 读取 Oracle 数据 - 字符丢失重音

count - SAS如何获取同一数据集中的汇总计数

sas - 我们如何区分 PC SAS 和 SAS 服务器

sas - 如何在 SAS 中进行双重转置

c++ - 如何在 C++ 中计算概率

excel - 错误: The Excel engine cannot be found