XML Parsing :


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting XML Parsing :
# 1  
Old 03-13-2014
XML Parsing :

HI
I want to parse below file in to two output :-

Input :-

Code:
?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">
                <xn:ManagedElement id="1">
                    <xn:VsDataContainer id="1">
                        <xn:attributes>
                            <xn:vsDataType>vsDataENodeBFunction</xn:vsDataType>
                            <es:vsDataENodeBFunction/>
                       </xn:attributes>	
		                   <xn:VsDataContainer id="C136_A">
                            <xn:attributes>
                                <xn:vsDataType>vsDataEUtranCellFDD</xn:vsDataType>
                                <es:vsDataEUtranCellFDD/>
                            </xn:attributes>
                            <xn:VsDataContainer id="4360">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataUtranFreqRelation</xn:vsDataType>
                                    <es:vsDataUtranFreqRelation>
                                    <es:connectedModeMobilityPrio>3</es:connectedModeMobilityPrio>
                                    <es:csFallbackPrio>3</es:csFallbackPrio>
                                    <es:qOffsetFreq>0</es:qOffsetFreq>
                                    <es:csFallbackPrioEC>3</es:csFallbackPrioEC>
                                    <es:mobilityAction>2</es:mobilityAction>
                                    <es:mobilityActionCsfb>0</es:mobilityActionCsfb>
                                    <es:threshXHighQ>0</es:threshXHighQ>
                                    <es:threshXLowQ>0</es:threshXLowQ>
                                    <es:voicePrio>3</es:voicePrio>
                                    <es:anrMeasOn>true</es:anrMeasOn>
                                    </es:vsDataUtranFreqRelation>
                                </xn:attributes>
                            </xn:VsDataContainer>
                            <xn:VsDataContainer id="487">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataUtranFreqRelation</xn:vsDataType>
                                    <es:vsDataUtranFreqRelation>
                                    <es:connectedModeMobilityPrio>2</es:connectedModeMobilityPrio>
                                    <es:csFallbackPrio>2</es:csFallbackPrio>
                                    <es:qOffsetFreq>0</es:qOffsetFreq>
                                    <es:csFallbackPrioEC>2</es:csFallbackPrioEC>
                                    <es:mobilityAction>2</es:mobilityAction>
                                    <es:mobilityActionCsfb>0</es:mobilityActionCsfb>
                                    <es:threshXHighQ>0</es:threshXHighQ>
                                    <es:threshXLowQ>0</es:threshXLowQ>
                                    <es:voicePrio>2</es:voicePrio>
                                    <es:anrMeasOn>true</es:anrMeasOn>
                                    </es:vsDataUtranFreqRelation>
                                </xn:attributes>
                            </xn:VsDataContainer>
                            <xn:VsDataContainer id="9750">
                                <xn:attributes>
                                    <xn:vsDataType>vsDataUtranFreqRelation</xn:vsDataType>
                                    <es:vsDataUtranFreqRelation>
                                    <es:connectedModeMobilityPrio>-1</es:connectedModeMobilityPrio>
                                    <es:csFallbackPrio>-1</es:csFallbackPrio>
                                    <es:qOffsetFreq>0</es:qOffsetFreq>
                                    <es:csFallbackPrioEC>-1</es:csFallbackPrioEC>
                                    <es:mobilityAction>2</es:mobilityAction>
                                    <es:mobilityActionCsfb>0</es:mobilityActionCsfb>
                                    <es:threshXHighQ>0</es:threshXHighQ>
                                    <es:threshXLowQ>0</es:threshXLowQ>
                                    <es:voicePrio>-1</es:voicePrio>
                                    <es:anrMeasOn>true</es:anrMeasOn>
                                    </es:vsDataUtranFreqRelation>
                                </xn:attributes>
                            </xn:VsDataContainer>
                        </xn:VsDataContainer>
                    </xn:VsDataContainer>
                </xn:ManagedElement>
            </xn:MeContext>
        </xn:SubNetwork>
    </configData>
    <fileFooter dateTime="2014-03-13T12:11:07Z"/>
</bulkCmConfigDataFile>

Output :-

Code:
Output :1 -

C136 C136_A 4360 csFallbackPrio  -1
C136 C136_A 487  csFallbackPrio  -1
C136 C136_A 9750 csFallbackPrio  -1

Output :2 -

EN  ES      FR    connectedModeMobilityPrio csFallbackPrio  csFallbackPrioEC  voicePrio
C136 C136_A 4360  	-1                        -1              -1                3   
C136 C136_A 487   	-1      		  -1	          -1                2
C136 C136_A 9750  	-1	   		  -1              -1               -1


Last edited by asavaliya; 03-13-2014 at 04:40 PM..
# 2  
Old 03-13-2014
You want the values from these identifiers in tab or space delimited first file:
Code:
<xn:MeContext id="C136">
<xn:VsDataContainer id="C136_A">
<xn:VsDataContainer id="4360">
<es:csFallbackPrio>3</es:csFallbackPrio>
then a hardcoded -1

Then in 2nd tab or space delimited file:

1st record containing headers:
Code:
EN  ES      FR    connectedModeMobilityPrio csFallbackPrio  csFallbackPrioEC  voicePrio

then on each detail record the values from these identifiers:
Code:
<xn:MeContext id="C136">
<xn:VsDataContainer id="C136_A">
<xn:VsDataContainer id="4360">
then the value corresponding to the appropriate header line identifier

Is this what you are wanting to do?
Do you want to do this in a shell script?
# 3  
Old 03-13-2014
YES SIR,WITH Shell Scripting !!!!

I have below command to parse it for 2nd Output :-
Code:
nawk -F'[\"\>\<]' 'BEGIN{print "RNC UtranCell UtranRelation"} /MeContext id/{a=$3} /VsDataContainer id/{b=$3}/connectedModeMobilityPrio/{C=$3}/es:/{print a,b,c,$2,$3}' file

But it is not giving me the "<xn:VsDataContainer id="C136_A">" value

Last edited by Franklin52; 03-14-2014 at 04:23 AM.. Reason: Please use code tags
# 4  
Old 03-16-2014
I don't what the rules are for your "XML" file, But this script should give you the desired output(tab delimited output files) for the file data you supplied:
Code:
# Script: process_xml.pl
use strict;
use warnings;

my $in_file_1     =  '/temp/input_xml.xml';            ## xml file
my $out_file_1    =  '/temp/outputfile_1.txt';
my $out_file_2    =  '/temp/outputfile_2.txt';
my $xml_line;
my $mecontext_id;
my @vsdatacontainer_id;
my $vsdatacontainer_id_2;
my $vsdatacontainer_count  = 0;
my @connectedmodemobilityprio;
my @csfallbackprio;
my @csfallbackprioec;
my @voiceprio;
my $index;

open ( my $in_file_fh_1,  '<', $in_file_1  ) or die "Can't Open $in_file_1 $!\n";
open ( my $out_file_1_fh, '>', $out_file_1 ) or die "Can't open $out_file_1 $!\n";
open ( my $out_file_2_fh, '>', $out_file_2 ) or die "Can't open $out_file_2 $!\n";
# Write header line to 2nd output file
print $out_file_2_fh "EN\tES\tFR\tconnectedModeMobilityPrio\tcsFallbackPrio\tcsFallbackPrioEC\tvoicePrio" . "\n";

LINE: while ( ! eof( $in_file_fh_1 ) ) {
  $xml_line    =  <$in_file_fh_1>;
  chomp $xml_line;
  next LINE if $xml_line !~ /(xn:MeContext.id=\".*\"|
                              xn:VsDataContainer.id=\".*\"|
                              es:connectedModeMobilityPrio\>.*\<\/es:connectedModeMobilityPrio\>|
                              es:csFallbackPrio>.*\<\/es:csFallbackPrio\>|
                              es:csFallbackPrioEC\>.*\<\/es:csFallbackPrioEC\>|
                              es:voicePrio\>.*\<\/es:voicePrio\>
                             )/x;
  # Extract wanted XML values
  if ( $xml_line =~ /(xn:MeContext id)/ ) {
      $xml_line     =~ s!.*\"(.*)\".*!$1!;
      $mecontext_id =  $xml_line;
  }
  if ( $xml_line =~ /(xn:VsDataContainer id)/ ) {
      $vsdatacontainer_count++;
      if ( $vsdatacontainer_count  ==  1 ) {
        next LINE;
      }
      if ( $vsdatacontainer_count  ==  2 ) {
        $xml_line             =~ s!.*\"(.*)\".*!$1!;
        $vsdatacontainer_id_2 =  $xml_line;
      } else {
        $xml_line  =~  s!.*\"(.*)\".*!$1!;
        push @vsdatacontainer_id, $xml_line;
      }
  }
  if ( $xml_line =~ /(\<es:connectedModeMobilityPrio)/ ) {
      $xml_line  =~  s!.*\<es:connectedModeMobilityPrio\>(.*)\<\/es:connectedModeMobilityPrio\>!$1!;
      push @connectedmodemobilityprio, $xml_line;
  }
  if ( $xml_line =~ /(\<es:csFallbackPrio\>)/ ) {
      $xml_line  =~  s!.*\<es:csFallbackPrio>(.*)\<\/es:csFallbackPrio\>!$1!;
      push @csfallbackprio, $xml_line;
  }
  if ( $xml_line =~ /(\<es:csFallbackPrioEC\>)/ ) {
      $xml_line  =~  s!.*\<es:csFallbackPrioEC\>(.*)\<\/es:csFallbackPrioEC\>!$1!;
      push @csfallbackprioec, $xml_line;
  }
  if ( $xml_line =~ /(\<es:voicePrio)/ ) {
      $xml_line  =~  s!.*\<es:voicePrio\>(.*)\<\/es:voicePrio\>!$1!;
      push @voiceprio, $xml_line;
  }
}

# Write detail to output files
for $index ( 0 .. $#vsdatacontainer_id ) {
  print $out_file_1_fh "$mecontext_id\t$vsdatacontainer_id_2\t$vsdatacontainer_id[$index]\tcsFallbackPrio\t$csfallbackprio[$index]" . "\n";
  print $out_file_2_fh "$mecontext_id\t" .
                       "$vsdatacontainer_id_2\t" .
                       "$vsdatacontainer_id[$index]\t" .
                       "$connectedmodemobilityprio[$index]\t" .
                       "$csfallbackprio[$index]\t" .
                       "$csfallbackprioec[$index]\t" .
                       "$voiceprio[$index]" . "\n";
}

close $in_file_fh_1;
close $out_file_1_fh;
close $out_file_2_fh;

$ cat outputfile_1.txt
Code:
C136    C136_A  4360    csFallbackPrio  3
C136    C136_A  487     csFallbackPrio  2
C136    C136_A  9750    csFallbackPrio  -1

$ cat outputfile_2.txt
Code:
EN      ES      FR      connectedModeMobilityPrio       csFallbackPrio  csFallbackPrioEC        voicePrio
C136    C136_A  4360    3       3       3       3
C136    C136_A  487     2       2       2       2
C136    C136_A  9750    -1      -1      -1      -1

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

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

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