Split xml file into many


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split xml file into many
# 1  
Old 03-21-2012
Error Split xml file into many

Hi,

I had a scenario need a help as I am new to this. I have a xml file employee.xml with the below content.

<Organisation><employee>xxx</employee><employee>yyy</employee><employee>zzz</employee></Organisation>

I want to split the file into multiple file as below. Is there a specifice way to do this?

employee1.xml with content --> <Organisation><employee>1</employee></Organisation>
employee2.xml with content --> <Organisation><employee>2</employee></Organisation>
employee3.xml with content --> <Organisation><employee>3</employee></Organisation>

SmilieSmilieSmilie
# 2  
Old 03-21-2012
Try this awk...
Code:
awk 'BEGIN {
   FS="<(/)?employee>"
    h="<Organisation><employee>"
    t="</employee></Organisation>"
} {
   for (i=1;i<=NF;i++)
      if ($i ~ "[0-9]+")
         printf("%s%s%s\n", h,$i,t) > "emp"$i".xml"
}' file

# 3  
Old 03-21-2012
Is that what the XML file really looks like, or did you pretty it up for posting?

[edit] slightly misread, working on it
# 4  
Old 03-21-2012
Code:
nawk -v RS="</?Organisation>" -v FS="<employee>" '{ for(N=1; N<=NF; N++) if($N ~ /<[/]/) print FS $N > "employee"++C".xml" }' org.xml

If you don't have nawk, try gawk
# 5  
Old 03-22-2012
Thanks for the Reply friends... :-)
That's a sample file. I have to deal with 200 mb file. I will try out the suggestion.. :-)
# 6  
Old 03-22-2012
Note: in POSIX awk, RS can only be a single character, not a regular expression. Otherwise:

Try:
Code:
awk '{if(/^employee/){f=$1 $2 ".xml";print RS org FS RS $1 FS $2 RS "/" $1 FS RS "/" org FS>>f;close(f)}else if(/^[^\/]/)org=$1}' RS=\< FS=\> infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split large xml into mutiple files and with header and footer in file

Split large xml into mutiple files and with header and footer in file tried below it splits unevenly and also i need help in adding header and footer command : csplit -s -k -f my_XML_split.xml extrfile.xml "/<Document>/" {1} sample xml <?xml version="1.0" encoding="UTF-8"?><Recipient>... (36 Replies)
Discussion started by: karthik
36 Replies

2. Shell Programming and Scripting

Split Big XML file Base on tag

HI I want to split file base on tag name. I have few header and footer on file <?xml version="1.33" encing="UTF-8"?> <bulkCmConfigDataFile" <xn:SubNetwork id="ONRM_ROOT"> <xn:MeContext id="PPP04156"> ... (4 Replies)
Discussion started by: pareshkp
4 Replies

3. Shell Programming and Scripting

Split xml file into multiple xml based on letterID

Hi All, We need to split a large xml into multiple valid xml with same header(2lines) and footer(last line) for N number of letterId. In the example below we have first 2 lines as header and last line as footer.(They need to be in each split xml file) Header: <?xml version="1.0"... (5 Replies)
Discussion started by: vx04
5 Replies

4. Shell Programming and Scripting

Split XML file based on tags

Hello All , Please help me with below requirement I want to split a xml file based on tag.here is the file format <data-set> some-information </data-set> <data-set1> some-information </data-set1> <data-set2> some-information </data-set2> I want to split the above file into 3... (5 Replies)
Discussion started by: Pratik4891
5 Replies

5. Shell Programming and Scripting

Perl : to split the tags from xml file

I do have an xml sheet as below where I need the perl script to filter only the hyperlink tags. <cols><col min="1" max="1" width="30.5703125" customWidth="1"/><col min="2" max="2" width="7.140625" bestFit="1" customWidth="1"/> <col min="3" max="3" width="32.28515625" bestFit="1"... (3 Replies)
Discussion started by: scriptscript
3 Replies

6. Shell Programming and Scripting

Split XML file

Hi Experts, Can you please help me to split following XML file based on new Order ? Actual file is very big. I have taken few lines of it. <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Orders xmlns='http://www.URL.com/Orders'> <Order> <ORDNo>450321</ORDNo> ... (3 Replies)
Discussion started by: meetmedude
3 Replies

7. Shell Programming and Scripting

split XML file into multiple files based on pattern

Hello, I am using awk to split a file into multiple files using command: nawk '{ if ( $1 == "<process" ) { n=split($2, arr, "\""); file=arr } print > file }' processes.xml <process name="Process1.process"> ... (3 Replies)
Discussion started by: chiru_h
3 Replies

8. Shell Programming and Scripting

Split a 30GB XML file into 16 pieces

I have a 30 GB XMl file which looks like this: <page> <title>APRIL</title> .........(text contents that I need to extract and store in 1.dat including the <title> tag) </page> <page> <title>August</title> ....(text contents that I need to store in 2.dat including the <title> tag) </page>... (13 Replies)
Discussion started by: shoaibjameel123
13 Replies

9. Shell Programming and Scripting

Need to split a xml file in proper format

Hi, I have a file which has xml data but all in single line Ex - <?xml version="1.0"?><User><Name>Robert</Name><Location>California</Location><Occupation>Programmer</Occupation></User> I want to split the data in proper xml format Ex- <?xml version="1.0"?> <User> <Name>Robert</Name>... (6 Replies)
Discussion started by: avishek007
6 Replies

10. Shell Programming and Scripting

Shell script to split XML file

Hi, I'm experiencing difficulty in loading an XML file to an Oracle destination table.I keep running into a memory problem due to the large size of the file. I want to split the XML file into several smaller files based on the keyword(s)/tags : '' and '' and would like to use a Unix shell... (2 Replies)
Discussion started by: bayflash27
2 Replies
Login or Register to Ask a Question