Grep/Parse a .xml file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep/Parse a .xml file
# 1  
Old 03-07-2012
Grep/Parse a .xml file

I have a .xml file similar to the following:

HTML Code:
    <Column>
        <Name>FIELD1</Name>
        <Title>CO.</Title>
    </Column>
    <Column>
        <Name>FIELD2</Name>
        <EditField>TextBox</EditField> 
        <ColumnSpan0>4</ColumnSpan0>
        <Title>NORMAL</Title>
        <ColumnWidth>84px</ColumnWidth>
    </Column>
    <Column>
        <Name>FIELD3</Name>
        <EditField>TextBox</EditField>
        <Title>LONG</Title>
    </Column>
    <Column>
        <Name>FIELD4</Name>
        <Title>CO.</Title>
        <ColumnWidth>90px</ColumnWidth>
        <xGlobalFilterKey>FILLER_TEXT</xGlobalFilterKey>    
    </Column>
    <Column>
and I want to grab all fields with the "<Name>" tag. Also, if the name tag field can be edited (bock has an additional <EditField> tag), to include it or separate it next to the name field via comma. For instance, my output file would be something along the lines of":

<Name>FIELD1</Name>
<Name>FIELD2</Name>,<EditField>TextBox</EditField>
<Name>FIELD3</Name>,<EditField>TextBox</EditField>
<Name>FIELD4</Name>

At first, I thought I could use two grep statements (one for Name and the other for EditField), but then I would have the issue of lining everything up. Any suggestions?
# 2  
Old 03-07-2012
Try like...
Code:
 awk '/<Name>/' test1.txt

# 3  
Old 03-07-2012
the awk command works for gathering the name tag, but doesn't quite help me grab the edit fields. The awk yeilded results similar to grep. I need to be able to extract the name fields and if the block contains the edit tag, to include it in the output.
# 4  
Old 03-07-2012
You could try..
Code:
awk '/<Name>/{v=$0;getline;print $0~/<EditField>/? v "," $0:v}' inputfile

awk '/<Name>/{v=$1;getline;print $0~/<EditField>/? v "," $1:v}' inputfile


Last edited by michaelrozar17; 03-07-2012 at 10:30 AM..
# 5  
Old 03-07-2012
Try:
Code:
awk '/<Name>/{$1=$1;n=$0}/<EditField>/{$1=$1;e=$0}/<\/Column>/{print e?n","e:n;e=""}' file

---------- Post updated at 09:22 AM ---------- Previous update was at 09:20 AM ----------

Quote:
Originally Posted by michaelrozar17
You could try..
Code:
awk '/<Name>/{v=$0;getline;print $0~/<EditField>/? v "," $0:v}' inputfile

This will not work if "EditField" is not in the next line after "Name".
This User Gave Thanks to bartus11 For This Post:
# 6  
Old 03-07-2012
@bartus11

I do not understand what you said, please explain.
# 7  
Old 03-07-2012
For example if the xml file will have a bit different order of fields:
Code:
    <Column>
        <Name>FIELD1</Name>
        <Title>CO.</Title>
    </Column>
    <Column>
        <Name>FIELD2</Name>
        <ColumnSpan0>4</ColumnSpan0>
        <Title>NORMAL</Title>
        <EditField>TextBox</EditField> 
        <ColumnWidth>84px</ColumnWidth>
    </Column>
    <Column>
        <Name>FIELD3</Name>
        <Title>LONG</Title>
        <EditField>TextBox</EditField>
    </Column>
    <Column>
        <Name>FIELD4</Name>
        <Title>CO.</Title>
        <ColumnWidth>90px</ColumnWidth>
        <xGlobalFilterKey>FILLER_TEXT</xGlobalFilterKey>    
    </Column>
    <Column>

Then your code will not print the "EditField".
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

How can I parse xml file?

How can I parse file containing xml ? I am sure that its best to use perl - but my perl is not very good - can someone help? Example below contents of file containing the xml - I basically want to parse the file and have each field contained in a variable.. ie. I want to store the account... (14 Replies)
Discussion started by: frustrated1
14 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