How to grab data from xml block?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to grab data from xml block?
# 1  
Old 05-18-2012
How to grab data from xml block?

I tried searching the forums, but couldn't find anything relevant to my question.

I have an xml file like the following:
Code:
	<topLevel numberBlock="BLOCK1">
		<item="content1" title="Content 1">
			<RefPath="path/to/file1.txt />
		</item>
		<item"content2" title="Content 2" >
			<RefPath="path/to/file2.txt" />
		</item>
	</topLevel>

I want to grab the data only found in "BLOCK1". Specifically, I want the the "item" and "RefPath".

So the output would look like this:
Code:
		<item="content1" title="Content 1">
			<RefPath="path/to/file1.txt />
		<item="content2" title="Content 2" >
			<RefPath="path/to/file2.txt" />

I tried the following code, but it gives me additional RefPaths after BLOCK1 (there are numerous blocks:
Code:
grep -E 'item="content | RefPath' inputfile.xml

# 2  
Old 05-18-2012
Code:
$ cat a.txt
<topLevel numberBlock="BLOCK1">
        <item="content1" title="Content 1">
            <RefPath="path/to/file1.txt"/>
        </item>
        <item="content2" title="Content 2" >
            <RefPath="path/to/file2.txt" />
        </item>
    </topLevel>
$ awk -F\" '/BLOCK1/{a=1} /<\/toplevel>/{a=0} a && /item/ {item=$2} a && item  && /RefPath/ {path=$2} a && item && path {print item,path;item=path=0}' a.txt
content1 path/to/file1.txt
content2 path/to/file2.txt

# 3  
Old 05-18-2012
thanks itkamaraj. I found a different variation to solve my problems. I used to isolate block one from the other blocks.
Code:
sed -n '/topLevel numberBlock="BLOCK1"*/,/<\/topLevel>/p' inputfile.xml

# 4  
Old 05-18-2012
Or maybe something like this?
Code:
awk '/<topLevel/ && /BLOCK1/{f=1}
f && /<\/topLevel/{f=0}
f && /<item/{print; getline; print}
' file

# 5  
Old 05-18-2012
Quote:
Originally Posted by Franklin52
Or maybe something like this?
Code:
awk '/<topLevel/ && /BLOCK1/{f=1}
f && /<\/topLevel/{f=0}
f && /<item/{print; getline; print}
' file

way better than mine!
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to grab data in range then search for pattern

im using the following code to grab data, but after the data in the range im specifying has been grabbed, i want to count how many instances of a particular pattern is found? awk 'BEGIN{count=0} /parmlib.*RSP/,/seqfiles.*SSD/ {print; count++ } /103 error in ata file/ END { print count }'... (3 Replies)
Discussion started by: SkySmart
3 Replies

2. Shell Programming and Scripting

How to grab a block of data in a file with repeating pattern?

I need to send email to receipient in each block of data in a file which has the sender address under TO and just send that block of data where it ends as COMPANY. I tried to work this out by getting line numbers of the string HELLO but unable to grab the next block of data to send the next... (5 Replies)
Discussion started by: loggedout
5 Replies

3. Shell Programming and Scripting

Grab data within a table in a long log file.

in my file which is a rather long log file it contains many text and tables and there is one table with 15 columns and I am interested to read in the value in column6 and its corresponding value in column2. Trouble is I do not know how to script it as the line number various between different log... (8 Replies)
Discussion started by: piynik
8 Replies

4. Shell Programming and Scripting

Grab 2 pieces of data within a file

I am a newbie and what I have is a captured file of content. I want to be able to grab 2 pieces of data, multiple times and print them to the screen. DataFile owner: locke user: fun data size: 60 location: Anaheim owner: david user: work data size: 80 location: Orange my script... (2 Replies)
Discussion started by: greglocke
2 Replies

5. Shell Programming and Scripting

Grab the data

Hello Honourable Members, I stuck into one issue, my server is migrating from UNIX to linux and ptree command does not work there. I was working with pstree command in linux and need some help regarding the same. suppose i have one line for example: ram (121)--- sita... (3 Replies)
Discussion started by: singhabm
3 Replies

6. Shell Programming and Scripting

Using Python to grab data from a website

Hello Everyone, I'm trying to write a python script that will go to the following website and grab all the data on the page. The page refreshes regularly and the number of flights is different. Untitled Document What I wanted to do was grab all the data (except for top three row containing... (5 Replies)
Discussion started by: jl487
5 Replies

7. UNIX for Dummies Questions & Answers

grab the data from the unix window

Hi, How could i grab a set of data (eg:file execution start & stop time stamp f) from unix? (1 Reply)
Discussion started by: siriv
1 Replies

8. Shell Programming and Scripting

How to grab data between 2 strings ?

Hi All, I have a text file below. How do i grab all the data between "05T00NPQSMR1" and "****" using awk ? Pls note that the text lines may not be fixed and text content is dynamic. Pls help. Thanks Below is my code where $LOT_SUFFIX is my shell variable. awk '/'"$LOT_SUFFIX"'/,/blah/'... (16 Replies)
Discussion started by: Raynon
16 Replies

9. UNIX for Dummies Questions & Answers

search and grab data from a huge file

folks, In my working directory, there a multiple large files which only contain one line in the file. The line is too long to use "grep", so any help? For example, if I want to find if these files contain a string like "93849", what command I should use? Also, there is oder_id number... (1 Reply)
Discussion started by: ting123
1 Replies
Login or Register to Ask a Question