- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 12-01-2021 09:41 PM
(943 views)
Hi everyone.
I'm trying to generate a bunch of XML files for a mail-out.
I need to change the root tag from <TABLE> to <RECORD>. I also need to have this tag: <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="1900C.xsd">.
/*This is a simplified example of the code I'm using*/ LIBNAME xmlout XML "&path.\HAVE.xml" xmlencoding="utf-8" tagset=tagsets.sasxmiss; data xmlout.Recorddata; set Addresses; keep FormID SequenceNumber ClientCorrespondenceLanguage ClientIdentificationNumber ClientName ClientAddress1 ClientAddress2 ClientAddress3; run; THIS IS THE OUTPUT I HAVE <?xml version="1.0" encoding="utf-8" ?> <TABLE> <RECORDDATA> <FormID>1111</FormID> <SequenceNumber>00000001</SequenceNumber> <ClientCorrespondenceLanguage>E</ClientCorrespondenceLanguage> <ClientIdentificationNumber>111111111</ClientIdentificationNumber> <ClientName>John Doe</ClientName> <ClientAddress1>1 ELM ST</ClientAddress1> <ClientAddress2>ANYWHERE PE C1C 1C1</ClientAddress2> <ClientAddress3/> </RECORDDATA> </TABLE> THIS IS THE OUTPUT I WANT <?xml version="1.0" encoding="utf-8"?> <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="1900C.xsd"> <Records> <RECORDDATA> <FormID>1111</FormID> <SequenceNumber>00000001</SequenceNumber> <ClientCorrespondenceLanguage>E</ClientCorrespondenceLanguage> <ClientIdentificationNumber>111111111</ClientIdentificationNumber> <ClientName>John Doe</ClientName> <ClientAddress1>1 ELM ST</ClientAddress1> <ClientAddress2>ANYWHERE PE C1C 1C1</ClientAddress2> <ClientAddress3/> </RECORDDATA> </Records>
Any help would be appreciated.
Thanks.
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
A bit of post-processing:
data _null_;
infile "&wdir\have.xml" ;
file "&wdir\want.xml";
input;
if _INFILE_='<TABLE>' then put '<Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="1900C.xsd">'
'0d0a'x '<Records>';
else if _INFILE_='</TABLE>' then put '</Records>';
else put _INFILE_;
run;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Perfect! Thanks very much.