cancel
Showing results for 
Search instead for 
Did you mean: 

Reading XML file into Dynamic Node and Display its output as Table.

Former Member
0 Kudos

Hi All,

Following is the output of XML file:


   <Company>
	<Employee>
		<Name>John</Name>
		<Age>23</Age>
		<Sex>Male</Sex>
		<Location>Frankfurt</Location>
	</Employee>
	<Employee>
		<Name>Tina</Name>
		<Age>21</Age>
		<Sex>Female</Sex>
		<Location>Boston</Location>
	</Employee>
	............
	<Department>
		<Name>Sales</Name>
		<HQ>Chicago</HQ>
		<Emplyoees>2300</Employees>
	</Department>	
	.............

   

I'm able to read the output through DOM parser. But How do I convert this into dynamic node and display this in Web dynpro as Table?

Any pointers in this regard will be great help?

Thanks

Srikant

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Maksim,

I've used your example and its now helping as there is kind of agreement on that I'll be knowing the structure of Xml and I can fill the nodes.

But suppose if you have Xml has following structure :


<?xml version="1.0" encoding="utf-8"?><DATA>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">CONTRACT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">CREDIT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">EMPRESS</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">PAYMENT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">PRICE</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
</DATA>

How we will do in this case?

Can we have something similar using DOM? Also what is the best method for displaying data being sent in form of XML. And generalize it for cases like this.

Thanks

Srikant

Former Member
0 Kudos

Hi Srikant,

You can parse the XML using DOM/SAX parser and you can populate the context below.

Item (ValueNode)

-


Mailer (ValueNode)

-


Type(ValueAttribute)

-


Size

-


ID

-


ORG_CODE(ValueNode)

-


Type(ValueAttribute)

-


Size(ValueAttribute)

-


OrgCode(ValueAttribute)

One way is you can create classes for Mailer,OrgCode with setter/getter attributes and while parsing the XML you can create objects and access these objects in WebDynpro code to populate the context.

Regards, Anilkumar

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi Srikant,

Once you read the data from XML file , keep the data in an Object

Ex : Assume the following class structure .

While parsing the XML create instances of the following abjects and set the values.

Company Class

-


EmployeeClass

-


Name

-


Age

-


DeptClass

-


Name

-


HQ

In webdynpro application read the Company object and get alll the Employee Objects and populate the valuenodes.

Regards, Anilkumar

former_member182372
Active Contributor
0 Kudos

Hi Srikant,

Check

Best regards, Maksim Rashchynski.

Former Member
0 Kudos

Hi Maksim,

I've used your example and its now helping as there is kind of agreement on that I'll be knowing the structure of Xml and I can fill the nodes.

But suppose if you have Xml has following structure :


<?xml version="1.0" encoding="utf-8"?><DATA>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">CONTRACT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">CREDIT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">EMPRESS</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">PAYMENT</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
<item><MAILERID TYPE="C" SIZE="000030">21</MAILERID><ORG_CODE TYPE="C" SIZE="000004">1232</ORG_CODE><EVENTID TYPE="C" SIZE="000015">PRICE</EVENTID><SUBSCR_VALUE TYPE="C" SIZE="000001">0</SUBSCR_VALUE></item>
</DATA>

How we will do in this case?

Can we have something similar using DOM?

Thanks

Srikant

Former Member
0 Kudos

Do you know the structure of the XML beforehand or should that be totally generic?

If you know the structure, you can create the corresponding context structure at designtime and create node elements from the XML content.

Armin

Former Member
0 Kudos

Hi Armin

The Structure of the XML is totally generic.

I want to know if there is a way I can get these nodes and their Values and make dynamic nodes out of it.

And Anil,

So Far I'm just able to read the XML, but how and where to store them in objects. Can you explain.

Maksim,

I came across your example but I wasn't getting it though fully as in my case the node is dynamic. Can you put some light in how to go about this thing?

Thanks

Srikant

Former Member
0 Kudos

Hi Srikant,

While parsing the XML iteself you can create the above mentioned objects .

Ex : In your parser you may have method called parseXX(Inputstream input)

In this method you can create the objects , set attributes and add it to a collection.

You can have anothe method returnXXX() which will return those objects .

Regards, Anilkumar

Former Member
0 Kudos

When you say structure of XML is totally generic, how are you going to decide about UI ?

When will you know, whether you need to create a tree structure or a table structure ?

How will you decide the cardinality of each node ?

Is there a DTD file that exists ?


   <Company>
	<Employee>
		<Name>John</Name>
		<Age>23</Age>
		<Sex>Male</Sex>
		<Location>Frankfurt</Location>
	</Employee>
	<Employee>
		<Name>Tina</Name>
		<Age>21</Age>
		<Sex>Female</Sex>
		<Location>Boston</Location>
	</Employee>
	............
	<Department>
		<Name>Sales</Name>
		<HQ>Chicago</HQ>
		<Emplyoees>2300</Employees>
	</Department>	

Tomorrow if you get Customer details, day after tomorrow if you get Purchase Order details, how will you decide the UI ?

Regards,

Subramanian V.