我想在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> <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>
答案 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> <termEntry id=1></termEntry> </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;