Forming an XML file

sharadpsu

Junior Member
Mar 17, 2012
4
0
0
I am a student and I have a CSV file and I need to format the data and create an XML file. I came up with two possible solutions but don't know which one is correct. I wanted to get some advice from experts.

The first try attempts to organize and nest data by like grouping. The second try just converts the CSV line by line. Is one of them wrong? Are they both valid? Is one more valid than the other?

I understand that this might be simple to the experience programmer, but keep in mind that I am a student. (ignore the difference in case in the content --upper vs lower)

Thanks you.


CSV Contents
Code:
major,course number,student id,semester,start date,end date
is,is101,12345,fall 2011,9/7/2011,12/14/2011
is,is101,23456,fall 2011,9/7/2011,12/14/2011
is,is101,34567,fall 2011,9/7/2011,12/14/2011
is,is101,45678,fall 2011,9/7/2011,12/14/2011
is,is102,12345,fall 2011,9/7/2011,12/14/2011
is,is102,23456,fall 2011,9/7/2011,12/14/2011
cis,cis102,34567,fall 2011,9/7/2011,12/14/2011
cis,cis102,45678,fall 2011,9/7/2011,12/14/2011
is,is103,12345,spring 2012,1/23/2012,5/7/2012
is,is103,23456,spring 2012,1/23/2012,5/7/2012
is,is103,34567,spring 2012,1/23/2012,5/7/2012
is,is103,45678,spring 2012,1/23/2012,5/7/2012
is,is103,12345,spring 2012,1/23/2012,5/7/2012
is,is103,23456,spring 2012,1/23/2012,5/7/2012
cis,cis101,34567,spring 2012,1/23/2012,5/7/2012
cis,cis101,45678,spring 2012,1/23/2012,5/7/2012
Try #1

HTML:
<CATALOG>
	<SEMESTER id="FALL 2011" startdate="9/7/2011" enddate="12/14/2011">
		<MAJOR id="IS">
			<COURSENUMBER id="IS101">
				<STUDENTID>12345</STUDENTID>
				<STUDENTID>23456</STUDENTID>
				<STUDENTID>34567</STUDENTID>
				<STUDENTID>45678</STUDENTID>
			</COURSENUMBER>
			<COURSENUMBER id="IS102">
				<STUDENTID>12345</STUDENTID>
				<STUDENTID>23456</STUDENTID>
			</COURSENUMBER>
		</MAJOR>
		<MAJOR id="CIS">
			<COURSENUMBER id="CIS102">
				<STUDENTID>34567</STUDENTID>
				<STUDENTID>45678</STUDENTID>
			</COURSENUMBER>
		</MAJOR>
	</SEMESTER>
	<SEMESTER id="SPRING 2012" startdate="1/23/2012" enddate="5/7/2012">
			<MAJOR id="IS">
			<COURSENUMBER id="IS103">
				<STUDENTID>12345</STUDENTID>
				<STUDENTID>23456</STUDENTID>
				<STUDENTID>34567</STUDENTID>
				<STUDENTID>45678</STUDENTID>
				<STUDENTID>12345</STUDENTID>
				<STUDENTID>23456</STUDENTID>
			</COURSENUMBER>
		</MAJOR>
		<MAJOR id="CIS">
			<COURSENUMBER id="CIS101">
				<STUDENTID>34567</STUDENTID>
				<STUDENTID>45678</STUDENTID>
			</COURSENUMBER>
		</MAJOR>
	</SEMESTER>
</CATALOG>

Try #2

HTML:
<CATALOG>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS101</COURSE_NUMBER >
		  <STUDENT>12345</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS101</COURSE_NUMBER >
		  <STUDENT>23456</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS101</COURSE_NUMBER >
		  <STUDENT>34567</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS101</COURSE_NUMBER >
		  <STUDENT>45678</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS102</COURSE_NUMBER >
		  <STUDENT>12345</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS102</COURSE_NUMBER >
		  <STUDENT>23456</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>CIS</MAJOR >
		  <COURSE_NUMBER>CIS102</COURSE_NUMBER >
		  <STUDENT>34567</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>CIS</MAJOR >
		  <COURSE_NUMBER>CIS102</COURSE_NUMBER >
		  <STUDENT>45678</STUDENT >
		  <ID>FALL 2011</ID >
		  <SEMESTER>9/7/2011</SEMESTER >
		  <START_DATE>12/14/2011</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS103</COURSE_NUMBER >
		  <STUDENT>12345</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS103</COURSE_NUMBER >
		  <STUDENT>23456</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS103</COURSE_NUMBER >
		  <STUDENT>34567</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS103</COURSE_NUMBER >
		  <STUDENT>45678</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS103</COURSE_NUMBER >
		  <STUDENT>12345</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>IS</MAJOR >
		  <COURSE_NUMBER>IS103</COURSE_NUMBER >
		  <STUDENT>23456</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>CIS</MAJOR >
		  <COURSE_NUMBER>CIS101</COURSE_NUMBER >
		  <STUDENT>34567</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
	 <COURSE>
		  <MAJOR>CIS</MAJOR >
		  <COURSE_NUMBER>CIS101</COURSE_NUMBER >
		  <STUDENT>45678</STUDENT >
		  <ID>SPRING 2012</ID >
		  <SEMESTER>1/23/2012</SEMESTER >
		  <START_DATE>5/7/2012</START_DATE >
	 </COURSE>
</CATALOG>
 
Last edited:

BoberFett

Lifer
Oct 9, 1999
37,562
9
81
There is no "correct" answer, as long as your XML is parseable it's "correct." Whether it can be used by another program and what format it expects is another matter.
 

Merad

Platinum Member
May 31, 2010
2,586
19
81
Your CSV has 7 headers but only 6 fields of data. If you haven't noticed this is causing Try #2 to have data in the incorrect field.

That said try #2 is more logical to me. I would probably move some of the identifying info for the course into attributes though, so when you're reading data in a program you can identify the course without having to step into its child elements.
 

sharadpsu

Junior Member
Mar 17, 2012
4
0
0
Your CSV has 7 headers but only 6 fields of data. If you haven't noticed this is causing Try #2 to have data in the incorrect field.

That said try #2 is more logical to me. I would probably move some of the identifying info for the course into attributes though, so when you're reading data in a program you can identify the course without having to step into its child elements.

"student id" should be one header. My error.

Thanks.
 

Leros

Lifer
Jul 11, 2004
21,867
7
81
Both are valid. How your design your groupings is dependent on how you're going to use the data.