How can I parse xml file?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How can I parse xml file?
# 8  
Old 09-13-2008
Thanks for help to date - its been very useful

One more snag... another possible xml file I have to parse contains something like this..

I need to get the Acc total for each sub account id..
ie. there are 3 sub accounts but the tags are the same... what can I do here?

<RecSubaccs>

<RecSubacc>
<SubaccId>1</SubaccId>
<RecAccTotal>0</RecAccTotal>
</RecSubacc>

<RecSubacc>
<SubaccId>2</SubaccId>
<RecAccTotal>0</RecAccTotal>
</RecSubacc>

<RecSubacc>
<SubaccId>3</SubaccId>
<RecAccTotal>0</RecAccTotal>
</RecSubacc>

</RecSubaccs>
# 9  
Old 09-13-2008
You could also use CPAN (XML::pick_one): Stepping up from XML::Simple to XML::LibXML
# 10  
Old 09-13-2008
Code:
awk -v v=SubaccId -F'[<|>]' '$2==v{s=$3;getline;a[s]+=$3}END {for (i in a)print v,i,a[i]}'   file

Next time please start a new topic for your new question.
# 11  
Old 09-14-2008
I asked this question in same thread as I need to do this in the same script and its a sub-question..

Can you tell me how I do this within the same script so I can still get the name, add etc but also get the subtotals for each of the sub accounts...

ie. I need to be able to echo account, name, add, subtotal1, subtotal2 and subtotal3

How can I do this?
# 12  
Old 09-14-2008
Quote:
Originally Posted by danmero
Code:
awk -v v=SubaccId -F'[<|>]' '$2==v{s=$3;getline;a[s]+=$3}END {for (i in a)print v,i,a[i]}'   file

Next time please start a new topic for your new question.

This code worked for me - can you explain the awk code and what its doing at each step so I can understand this?
# 13  
Old 09-14-2008
Quote:
Originally Posted by frustrated1
This code worked for me - can you explain the awk code and what its doing at each step so I can understand this?

Can you tell me how I need to modify this if there are more fields in the xml response?

ie. if there was additional information in a different response as below in red what do I need to change in the awk code?



<RecSubaccs>

<RecSubacc>
<SubaccId>1</SubaccId>
<RecAccTotal>0</RecAccTotal>
<RedAccType>Perm</RedAccType>
</RecSubacc>

<RecSubacc>
<SubaccId>2</SubaccId>
<RecAccTotal>0</RecAccTotal>
<RedAccType>Perm</RedAccType>
</RecSubacc>

<RecSubacc>
<SubaccId>3</SubaccId>
<RecAccTotal>0</RecAccTotal>
<RedAccType>Temp</RedAccType>
</RecSubacc>

</RecSubaccs>
# 14  
Old 09-14-2008
Quote:
Originally Posted by frustrated1
This code worked for me - can you explain the awk code and what its doing at each step so I can understand this?
I'll try:
Code:
# cat awk.file
BEGIN{
      FS="[<|>]"     # Set Field Separator
      v="SubaccId"   # Set v value, the search pattern
      }
$2==v{               # If second field equal v...
      s=$3           # Set assign third field value to s variable
      getline        # Read next line
      a[s]+=$3       # Build the a array with the s elements and sum of third field
      }
END{                 # At the end do....
    for (i in a)     # For each element of a array do..
    print v, i, a[i] # Print v (static pattern) and i (array element) and i array value.
   }

and run the code as:
Code:
awk -f awk.file data.file

and please start a new topic for your new question!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parse xml file

I am trying to create a shell script that will parse an xml file (file attached). awk '/Id v=/ { print }' Test.xml | sed 's!<Id v=\"\(.*\)\"/>!\1!' > output.txt An output.txt file is created but it is empty. It should contain the value 222159 in it. Thanks. (7 Replies)
Discussion started by: cmccabe
7 Replies

2. Shell Programming and Scripting

Parse XML File.

HI Guys I have Below XML File : <xn:SubNetwork id="XYZ"> <xn:SubNetwork id="C01"> <xn:MeContext id="CO1"> <xn:ManagedElement id="1"> <un:RncFunction id="1"> <un:UtranCell id="NY431"> ... (2 Replies)
Discussion started by: pareshkp
2 Replies

3. UNIX for Dummies Questions & Answers

Parse xml file

HI Guys, Input .XML <xn:MeContext id="L0307"> <xn:ManagedElement id="1"> <xn:VsDataContainer id="1"> <xn:attributes> <xn:vsDataType>vsDataENodeBFunction</xn:vsDataType> ... (3 Replies)
Discussion started by: pareshkp
3 Replies

4. Programming

Parse XML file

How do I get the field info for tags ID, NAME, DESCRIPTION. Below is my current code put I can't get beyond the first_child of the file. use strict; use warnings; use XML::Simplehttp://images.intellitxt.com/ast/adTypes/icon1.png; use... (1 Reply)
Discussion started by: leemalloy
1 Replies

5. Shell Programming and Scripting

parse xml file

Hello all, Given the following extract from a xml file with multiple <JOB> .... </JOB> entries <JOB APPLICATION="APP" APR="0" AUG="0" AUTHOR="AUT" AUTOARCH="0" CMDLINE="/tmp/test1 %%var" CONFIRM="1" CREATION_DATE="20100430" CREATION_TIME="130739" ... (2 Replies)
Discussion started by: cabrao
2 Replies

6. Emergency UNIX and Linux Support

How to parse the following xml file

Hi, I have the following file Example.xml <?xml version="1.0" encoding="iso-8859-1"?> <html><set label="09/07/29" value="1241.90"/> </html> Can any one help me in parsing this xml file I want to retrive the attribute values of the tag set Example I want to... (3 Replies)
Discussion started by: Raji_gadam
3 Replies

7. Shell Programming and Scripting

Parse an XML task list to create each task.xml file

I have an task definition listing xml file that contains a list of tasks such as <TASKLIST <TASK definition="Completion date" id="Taskname1" Some other <CODE name="Code12" <Parameter pname="Dog" input="5.6" units="feet" etc /Parameter> <Parameter... (3 Replies)
Discussion started by: MissI
3 Replies

8. Shell Programming and Scripting

Parse String in XML file

Hello All, I am new to this and I need to parse an XML file. Here's the XML Input File: <Report version="1.2"> <summary fatals="0" testcases="1" expected_fails="0" unexpected_passes="0" warnings="9" tests="21" errors="0" fails="1" passes="20" /> <testresult... (4 Replies)
Discussion started by: racbern
4 Replies

9. Shell Programming and Scripting

Parse XML file

Hi, I need to parse the following XML data enclosed in <a> </a> XML tag using shell script. <X> ..... </X> <a> <b> <c>data1</c> <c>data2</c> </b> <d> <c>data3</c> </d> </a> <XX> ... </XX> (5 Replies)
Discussion started by: viki
5 Replies

10. Shell Programming and Scripting

How to parse a XML file using PERL and XML::DOm

I need to know the way. I have got parsing down some nodes. But I was unable to get the child node perfectly. If you have code please send it. It will be very useful for me. (0 Replies)
Discussion started by: girigopal
0 Replies
Login or Register to Ask a Question