XML Parsing


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users XML Parsing
# 1  
Old 02-24-2012
XML Parsing

I had a big XML and from which I have to make a layout as below
Code:
*TOTAL+CB      |		*CB+FX		|  CS		|*IR	      |	*TOTAL	         |
--------------------------------------------------------------------------------------------------
	       |CB		FX		|		|	      |			 |
DMFXNY	EMSGFX |DMFXNY	EMSGFX	DMFXNY	EMSGFX	|DMFXNY	EMSGFX	|DMFXNY	EMSGFX|	DMFXNY	EMSGFX	 |

so I fitered out from that big XML with required fields to make out this layout, but not able to proceed further to make layout like this .
So after filter from the big XML, the new xml having data looks like below,
Code:
<item>TOTAL+CB</item>
              <item>AllMember</item>
              <item>DMFXNY</item>
              <item>TOTAL+CB</item>
              <item>AllMember</item>
              <item>EMSGFX</item>
              <item>CB+FX</item>
              <item>CB</item>
              <item>AllMember</item>
              <item>DMFXNY</item>
              <item>CB+FX</item>
              <item>CB</item>
              <item>AllMember</item>
              <item>EMSGFX</item>
              <item>CB+FX</item>
              <item>FX</item>
              <item>AllMember</item>
              <item>DMFXNY</item>
              <item>CB+FX</item>
              <item>FX</item>
              <item>AllMember</item>
              <item>EMSGFX</item>
              <item>CS</item>
              <item>AllMember</item>
              <item>DMFXNY</item>
              <item>CS</item>
              <item>AllMember</item>
              <item>EMSGFX</item>
              <item>IR</item>
              <item>AllMember</item>
              <item>DMFXNY</item>
              <item>IR</item>
              <item>AllMember</item>
              <item>EMSGFX</item>
              <item>TOTAL</item>
              <item>AllMember</item>
              <item>DMFXNY</item>
              <item>TOTAL</item>
              <item>AllMember</item>
              <item>EMSGFX</item>

can anyone suggest how can I make this one. Please suggets in shell scripts .

Last edited by manas_ranjan; 02-24-2012 at 05:35 AM..
# 2  
Old 02-24-2012
where you have header and values ?
How can you matche with them ?
can you elabrate your req ?
# 3  
Old 02-24-2012
There is no xml header and footer for this xml.

As I already stated this xml is the filter out xml from original one(have header and footer) just to represent the layout.

vague idea:
Code:
1 remove all member items i.e. AllMember
2 in this requirement the headers of lyout are fixed like TOTAL+CB,CB+FX,CS,IR, TOTAL
3 all I need to find out consequent items falling under these mentioned header
let say for  array TOTAL+CB there are two items as DMFXNY, EMSGFX
       TOTAL+CB
           DMFXNY
       TOTAL+CB
            EMSGFX
similarly for CB+FX there are four items CB/DMFXNY ,CB/EMSGFX, FX/DMFXNY and FX/EMSGFX
          CB+FX
             CB
           DMFXNY
          CB+FX
             CB
          EMSGFX
          CB+FX
             FX
         DMFXNY
          CB+FX
             FX
              EMSGFX

to give the layout as below
Code:
 TOTAL+CB      |		 CB+FX		       |  CS		| IR	      |	 TOTAL	      |
-------------------------------------------------------------------------------------------------------
DMFXNY	EMSGFX |CB/DMFXNY CB/EMSGFX FX/DMFXNY FX/EMSGFX|DMFXNY	EMSGFX  |DMFXNY	EMSGFX|	DMFXNY	EMSGFX|

this is just vague idea, if you have better thought then please share?

---------- Post updated at 06:27 AM ---------- Previous update was at 04:30 AM ----------

now I sort out some more fields as per above requirement , now My file looks like as below , let's say I have a file like below
Code:
     TOTAL+CB
         DMFXNY
       TOTAL+CB
         EMSGFX
          CB+FX
             CB
         DMFXNY
          CB+FX
             CB
         EMSGFX
          CB+FX
             FX
         DMFXNY
          CB+FX
             FX
         EMSGFX
             CS
         DMFXNY
             CS
         EMSGFX
             IR
         DMFXNY
             IR
         EMSGFX
          TOTAL
         DMFXNY
          TOTAL
         EMSGFX

and now need to customise this file to look as below, so can anyone help me , how to ??
Code:
 TOTAL+CB      |		 CB+FX		       |  CS		| IR	      |	 TOTAL	      |
-------------------------------------------------------------------------------------------------------
DMFXNY	EMSGFX |CB/DMFXNY CB/EMSGFX FX/DMFXNY FX/EMSGFX|DMFXNY	EMSGFX  |DMFXNY	EMSGFX|	DMFXNY	EMSGFX|


Last edited by manas_ranjan; 02-24-2012 at 07:32 AM.. Reason: added layout
# 4  
Old 02-24-2012
file formatting

I have a input file like below,

Code:
       
      TOTAL+CB
         DMFXNY
       TOTAL+CB
         EMSGFX
          CB+FX
             CB
         DMFXNY
          CB+FX
             CB
         EMSGFX
          CB+FX
             FX
         DMFXNY
          CB+FX
             FX
         EMSGFX
             CS
         DMFXNY
             CS
         EMSGFX
             IR
         DMFXNY
             IR
         EMSGFX
          TOTAL
         DMFXNY
          TOTAL
         EMSGFX

how can I format this i/p as below

Code:
 TOTAL+CB      |		 CB+FX		       |  CS		| IR	      |	 TOTAL	      |
-------------------------------------------------------------------------------------------------------
DMFXNY	EMSGFX |CB/DMFXNY CB/EMSGFX FX/DMFXNY FX/EMSGFX|DMFXNY	EMSGFX  |DMFXNY	EMSGFX|	DMFXNY	EMSGFX|

any help appreciated??

Last edited by Ygor; 02-24-2012 at 10:26 AM.. Reason: Merged from a diffent thread
# 5  
Old 02-24-2012
awk

Hi Dude,

Try this one,

Code:
 
script.awk
========
 
#! /usr/bin/awk
 
{
  gsub(/item|\<|\>|\//,"");
   if ( $0 !~ /AllMember/ )
   {
      if( NR != 1 )
      {
         a=a"|"$0;
      }
      else
      {
         a=$0;
      }
   }
}
END{
   split(a,out,"|");
   c=gsub(/\|/,"",a);
   for(i=1;i<=c;i++)
   {
       key=out[i];
       if(res[key]=="")
       {
           res[key]=out[i+1];
       }
       else
       {
          res[key]= res[key]" "out[i+1];
       }
   }
   print"\n\n";
   for(i in res)
   {
      ORS="";
      printf("%s%8s|",i," ");
      ORS="\n";
   }
   print "\n-----------------------------------------------------------------------------------------------------------------\n";
   for(i in res)
   {
      ORS="";
      print res[i]" |";
      ORS="\n";
   }
}
 
Running Procedure:
awk -f script.awk Input_File
 
If you are in solaris system, use nawk instead on awk.

The above script will take the below information as an input.

Code:
TOTAL+CB
         DMFXNY
       TOTAL+CB
         EMSGFX
          CB+FX
             CB
         DMFXNY
          CB+FX
             CB
         EMSGFX
          CB+FX
             FX
         DMFXNY
          CB+FX
             FX
         EMSGFX
             CS
         DMFXNY
             CS
         EMSGFX
             IR
         DMFXNY
             IR
         EMSGFX
          TOTAL
         DMFXNY
          TOTAL
         EMSGFX

Cheers,
RangaSmilie

Last edited by rangarasan; 02-24-2012 at 10:26 AM..
# 6  
Old 02-24-2012
thanks ranga,
but it didn't help me quite a lot my o/p looks like below a zigsaw puzzle :-)




Code:
             IR      |         DMFXNY      |             FX      |             CB      |          CB+FX      |       TOTAL+CB      |          TOTAL      |         EMSGFX      |             CS      |
-----------------------------------------------------------------------------------------------------------------

         DMFXNY          EMSGFX  |       TOTAL+CB           CB+FX           CB+FX              CS              IR           TOTAL  |         DMFXNY          EMSGFX  |         DMFXNY          EMSGFX  |             CB              CB              FX              FX  |         DMFXNY          EMSGFX  |         DMFXNY          EMSGFX  |          CB+FX           CB+FX              CS              IR           TOTAL                  |         DMFXNY          EMSGFX  |

# 7  
Old 02-24-2012
awk

Yeah, just now worked with your complete input.
Its working fine if you have some small amount of information. I mean six header. If its more than six headers it hurts.

Cheers,
RangaSmilie

Last edited by rangarasan; 02-24-2012 at 10:27 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

XML parsing

I have an xml file where the format looks like below <SESSIONCOMPONENT REFOBJECTNAME ="pre_session_command" REUSABLE ="NO" TYPE ="Pre-session command"> <TASK DESCRIPTION ="" NAME ="pre_session_command" REUSABLE ="NO" TYPE ="Command" VERSIONNUMBER ="1"> ... (8 Replies)
Discussion started by: r_t_1601
8 Replies

2. Shell Programming and Scripting

XML Parsing :

HI I want to parse below file in to two output :- Input :- ?xml version="1.0" encoding="UTF-8"?> <bulkCmConfigDataFile xmlns:un="utranNrm.xsd" <configData dnPrefix="Undefined"> <xn:SubNetwork id="ONRM_ROOT_MO_R"> <xn:MeContext id="C136"> ... (3 Replies)
Discussion started by: asavaliya
3 Replies

3. Shell Programming and Scripting

XML parsing

i have xml output in below format... <AlertsResponse> <Alert id="11216" name="fgdfg"> <AlertActionLog timestamp="1356521629778" user="admin" detail="Recovery Alert"/> </Alert> <Alert id="11215" name="gdfg <AlertActionLog timestamp="1356430119840" user=""... (12 Replies)
Discussion started by: vivek d r
12 Replies

4. Shell Programming and Scripting

XML: parsing of the Google contacts XML file

I am trying to parse the XML Google contact file using tools like xmllint and I even dived into the XSL Style Sheets using xsltproc but I get nowhere. I can not supply any sample file as it contains private data but you can download your own contacts using this script: #!/bin/sh # imports... (9 Replies)
Discussion started by: ripat
9 Replies

5. Shell Programming and Scripting

Parsing XML

I am trying to parse an xml file and trying to grab certain values and inserting them into database table. I have the following xml that I am parsing: <dd:service name="locator" link="false"> <dd:activation mode="manual" /> <dd:run mode="direct_persistent" proxified="false" managed="true"... (7 Replies)
Discussion started by: $criptKid617
7 Replies

6. Shell Programming and Scripting

Parsing XML

Learned People, Hello ! Till today, for the most part, all of the tricky questions/situations that I encountered were already posted by other folks and all I had to do was peruse through these one at a time and I could find some sort of an answer and all I had to do was add some minor tweaks... (5 Replies)
Discussion started by: ManoharMa
5 Replies

7. Shell Programming and Scripting

XML parsing

I have a xml file attached. I need to parse parameterId and its value My output should be like 151515 38 151522 32769 and so on.. Please help me. Its urgent (6 Replies)
Discussion started by: LavanyaP
6 Replies

8. Shell Programming and Scripting

XML Parsing

Hi, Need a script to parse the following xml file content <tag1 Name="val1"> <abc Name="key"/> <abc Name="pass">*********</abc> </tag1> <tag2 Name="Core"> <Host Name="a.b.c"> <tag1 Name="abc"> <abc Name="ac">None</abc> ... (4 Replies)
Discussion started by: Mavericc
4 Replies

9. Shell Programming and Scripting

parsing xml

I want to use wget comment to parse an xml parse that exist in an online website. How can I connect it using shell script through Unix and how can I parse it?? (1 Reply)
Discussion started by: walnut
1 Replies

10. Programming

XML parsing

Hi I want to take an XML file and transform it into a pipe-delimited format. What is the best tool to use for this? I have libxml2 which seems to be the best xml parser around. The xml file will have the following format. <Txn> <Date>120504</Date> <id>99</id> <Items> <Item>... (1 Reply)
Discussion started by: handak9
1 Replies
Login or Register to Ask a Question