| Importing XML Documents |
For a file that is a concatenation of multiple XML documents, you can use the XML engine to import the file. To import concatenated XML documents, simply specify the LIBNAME statement option XMLCONCATENATE=YES.
Note: Use XMLCONCATENATE=YES cautiously. If an XML document consists
of concatenated XML documents, the content is not standard XML construction.
The option is provided for convenience, not to encourage invalid XML markup. ![[cautionend]](../../../../common/63294/HTML/default/images/cautend.gif)
This example imports the following file named ConcatStudents.XML, which consists of two XML documents:
<?xml version="1.0" ?> <LIBRARY> <STUDENTS> <ID>1345</ID> <NAME>Linda Kay</NAME> <SCHOOL>Bellaire</SCHOOL> <CITY>Houston</CITY> </STUDENTS> <STUDENTS> <ID>2456</ID> <NAME>Chas Wofford</NAME> <SCHOOL>Sam Houston</SCHOOL> <CITY>Houston</CITY> </STUDENTS> <STUDENTS> <ID>3567</ID> <NAME>Jerry Kolar</NAME> <SCHOOL>Sharpstown</SCHOOL> <CITY>Houston</CITY> </STUDENTS> </LIBRARY> <?xml version="1.0" ?> <LIBRARY> <STUDENTS> <ID>1234</ID> <NAME>Brad Martin</NAME> <SCHOOL>Reagan</SCHOOL> <CITY>Austin</CITY> </STUDENTS> <STUDENTS> <ID>2345</ID> <NAME>Zac Harvell</NAME> <SCHOOL>Westwood</SCHOOL> <CITY>Austin</CITY> </STUDENTS> <STUDENTS> <ID>3456</ID> <NAME>Walter Smith</NAME> <SCHOOL>Bowie</SCHOOL> <CITY>Austin</CITY> </STUDENTS> </LIBRARY>
First, using the default XML engine behavior, which does not support concatenated XML documents (XMLCONCATENATE=NO), the following SAS program imports the first XML document, which consists of three observations, and produces an error for the second XML document:
libname concat xml '/u/My Documents/XML/ConcatStudents.xml'; proc datasets library=concat;
NOTE: Libref CONCAT was successfully assigned as follows:
Engine: XML
Physical Name: /u/My Documents/XML/ConcatStudents.xml
20 proc datasets library=concat;
ERROR: "xml" is illegal as a processing-instruction target name.
encountered during XMLMap parsing
occurred at or near line 23, column 7
Directory
Libref CONCAT
Engine XML
Physical Name /u/My Documents/XML/ConcatStudents.xml
XMLType GENERIC
XMLMap NO XMLMAP IN EFFECT
Member
# Name Type
1 STUDENTS DATA
Specifying the LIBNAME statement option XMLCONCATENATE=YES enables the XML engine to import the concatenated XML documents as one SAS data set:
libname concat xml '/u/My Documents/XML/ConcatStudents.xml' xmlconcatenate=yes; proc print data=concat.students; run;
The SAS System 1
Obs CITY SCHOOL NAME ID
1 Houston Bellaire Linda Kay 1345
2 Houston Sam Houston Chas Wofford 2456
3 Houston Sharpstown Jerry Kolar 3567
4 Austin Reagan Brad Martin 1234
5 Austin Westwood Zac Harvell 2345
6 Austin Bowie Walter Smith 3456
Copyright © 2010 by SAS Institute Inc., Cary, NC, USA. All rights reserved.