XML parsing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting XML parsing
# 1  
Old 01-24-2013
XML parsing

i have xml output in below format...

Code:
 
<AlertsResponse>
    <Alert id="11216" name="fgdfg">
        <AlertActionLog timestamp="1356521629778" user="admin" detail="Recovery Alert"/>
    </Alert>
    <Alert id="11215" name="gdfg
        <AlertActionLog timestamp="1356430119840" user="" detail="TRAP sent successfully."/>
        <AlertActionLog timestamp="1356430247023" user="admin" detail="Recovery Alert"/>
    </Alert>
</AlertsResponse>

i want to parse the above to get below output.... how do i do it? can anyone please explain?

Code:
 
id=11216
name=APPfixed=true
date=2012-12-25,06:38:43.6
 
id=11215
name=APPfixed=true
date=2012-12-25,06:33:43.6


Last edited by vivek d r; 03-20-2013 at 11:41 AM..
# 2  
Old 01-24-2013
did you try anything?
What lang you are planning to use?

In perl there is XML::Simple module available, just read the file using module, use Data:Smilieumper to see how data is formatted in perl hash. Once you know where to look for required data just pick the proper fields from hash and get the result.
# 3  
Old 01-24-2013
is it possible to do that in shell... perl i dont know whether my machine has it or not... can you just guide me how to start on it... ??

i have worked on java xml parsing but xml parsing in shell is new to me.. although i have knowledge on basic awk/grep string manipulation in shell scripts... working on them since many months now.
# 4  
Old 01-24-2013
Code:
awk -F'[=|"|<|>|,]' '{for(i=1;i<=NF;i++){
 if($i=="Alert id") {
  if(id!="") print id,nm,fx,dt;
  id=($i=="Alert id")?$(i+2):id; }
  nm=($i==" name")?$(i+2):nm;
  fx=($i==" fixed")?$(i+2):fx;
  dt=($i~/^ [0-9]+-/)?$i" "$(i+1):dt;
 }
}END{
 print id,nm,fx,dt;
}' xmlfile

This User Gave Thanks to Yoda For This Post:
# 5  
Old 01-25-2013
thanks a lot.. the output is coming properly..

Code:
12530 APP-MS-lib_license_common-150016-licenseHardLimitReachedBlueWaveCTIAPI-S false  2013-01-24 08:09:34.7
12529 APP-MS-lib_license_common-150040-licenseSchemaTampered-S_R true  2013-01-24 08:09:
12528 APP-MS-lib_license_common-150012-enterpriseLicenseInstallFailed-S_R true  2013-01-24 08:09:08.0
12527 APP-MS-lib_security-124005-LoginLicense-S false  2013-01-24 08:00:47.2


can you please explain how the command works??
Code:
awk -F'[=|"|<|>|,]' '{for(i=1;i<=NF;i++){ if($i=="Alert id") {  if(id!="") print id,nm,fx,dt;  id=($i=="Alert id")?$(i+2):id; }  nm=($i==" name")?$(i+2):nm;  fx=($i==" fixed")?$(i+2):fx;  dt=($i~/^ [0-9]+-/)?$i" "$(i+1):dt; }}END{ print id,nm,fx,dt;}' xmlfile

like its in for loop and comparing for tags with $i.. if it matches how is it extracting it?

also i need one more help.. if i want the output to come in below format, how can i change the command?


Code:
ID=12530 
NAME=APP-MS-lib_license_common-150016-licenseHardLimitReachedBlueWaveCTIAPI-S 
FIXED=false  
DATE=2013-01-24 08:09:34.7

# 6  
Old 01-25-2013
To change the output format:
Code:
awk -F'[=|"|<|>|,]' '{for(i=1;i<=NF;i++){
 if($i=="Alert id") {
  if(id!="") printf "ID=%d\nNAME=%s\nFIXED=%s\nDATE=%s\n", id,nm,fx,dt;
  id=($i=="Alert id")?$(i+2):id; }
  nm=($i==" name")?$(i+2):nm;
  fx=($i==" fixed")?$(i+2):fx;
  dt=($i~/^ [0-9]+-/)?$i" "$(i+1):dt;
 }
}END{
 printf "ID=%d\nNAME=%s\nFIXED=%s\nDATE=%s\n", id,nm,fx,dt;
}' xmlfile

-F'[=|"|<|>|,] - Setting = " < > , as field separators.

So if $i matches the tag, we are extracting based on the position of tag value.
This User Gave Thanks to Yoda For This Post:
# 7  
Old 01-25-2013
so for
Code:
Alert id="11216"

Code:
$(i+2):id;

means, put second position from i to id variable is it??
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 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

4. 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

5. UNIX for Advanced & Expert Users

XML Parsing

I had a big XML and from which I have to make a layout as below *TOTAL+CB | *CB+FX | CS |*IR | *TOTAL | -------------------------------------------------------------------------------------------------- |CB FX | | | | DMFXNY EMSGFX... (6 Replies)
Discussion started by: manas_ranjan
6 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