military - ¿Cómo agregar el retorno de carro en el código SAS?
sas software (1)
Deseo agregar un retorno de carro / linebreak / linefeed al código SAS, de modo que haya retornos en el xml de salida.
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;
He intentado de diferentes maneras, como & # 13 ;, ''OA''X, & # 10 ;, <br /> etc. Pero ninguno de ellos funcionó. ¿Alguien puede ayudar?
Resultado actual:
<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>
Resultado Esperado:
<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>
De hecho, estoy un poco sorprendido de que obtienes
<body><termEntry ...
mediante el uso de LIBNAME XML. Podría inclinarme a generar el XML manualmente desde un paso DATA.
LIBNAME XML con style = generic (el valor predeterminado) generará el resultado del formulario
<dsname>
<columnname>column value</columnname>
</dsname>
<dsname>
<columnname>column value</columnname>
</dsname>
..etc...
es decir, una etiqueta <dsname>
para cada registro en su archivo de entrada con una etiqueta debajo para cada variable en el conjunto de datos. Para que SAS pueda leer el resultado de nuevo, escapará cualquier valor, de modo que si la variable en el conjunto de datos es una cadena y contiene cualquiera de los caracteres <
, &
etc, no "confundirá" el XML. Entonces en su caso, donde la variable en el conjunto de datos tiene un valor algo así como
<termEntry id=1>...</termEntry>
entonces esperaría que la salida de libname XML fuera algo así como
<TEXT>
<body> <termEntry id=1></termEntry> </body>
</TEXT
Las opciones parecen ser comprender cómo usar XMLMap con LIBNAME XML para generar el XML que desea (puede no ser posible según la versión de SAS que tenga) o generar el XML manualmente con un paso DATA:
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;