i have a input xml which i have to split based on doc and delt wise and save it in this format delt_0001.xml
This is my code
#!/usr/bin/perl
use XML::XPath;
my $file = 'file.xml';
my $xp = XML::XPath->new(filename=>$file);
foreach my $entry ( $xp->findnodes('/xml/service/main/doc') ) {
my $filename = $entry->findvalue('./delt/@id');
foreach my $entry1( $entry->findnodes('//delt')){
my $filename = $entry1->findvalue('/delt/@id');
my $content = $entry1->toString;
open(wr,">delt_$filename.xml");
print wr "$content\n";
close wr;
}
When i run the program all delt portion prints in one xml.
input xml delt.xml
<xml>
<service>
<title>split xml</title>
<main>
<doc id="001">
<title>doc1</title>
<delt id="0001">
<title>delt1</title>
<text>num1</text>``
<text>num1</text>
</delt>
<delt id="0002-A">
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
</doc>
<doc id="002">
<title>doc2</title>
<delt id="0003">
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
<delt id="0004">
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
</doc>
</main>
</service>
</xml>
output am geting
<delt id="0001">
<title>delt1</title>
<text>num1</text>``
<text>num1</text>
</delt>
<delt id="0002-A">
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
<delt id="0003">
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
<delt id="0004">
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
output needed
split no 1 delt_0001.xml
<xml>
<service>
<title>split xml</title>
<main>
<doc id=001>
<title>doc1</title>
<delt id=0001>
<title>delt1</title>
<text>num1</text>``
<text>num1</text>
</delt>
</doc>
</main>
</service>
</xml>
split no 2 delt_0002-A.xml
<xml>
<service>
<title>split xml</title>
<main>
<doc id=001>
<title>doc1</title>
<delt id=0002=A>
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
</doc>
</main>
</service>
</xml>
split no 3 delt_0003.xml
<xml>
<service>
<title>split xml</title>
<main>
<doc id=002>
<title>doc2</title>
<delt id=0003>
<title>delt1</title>
<text>num1</text>
<text>num1</text>
</delt>
</doc>
</main>
</service>
</xml>
split no 4 delt_0004.xml
<xml>
<service>
<title>split xml</title>
<main>
<doc id=002>
<title>doc2</title>
<delt id=0004>
<title>delt1</title>
<text>num1</text>
<text>num1</text>
<delt>
</doc>
</main>
</service>
</xml>
Thanks in advance
No comments:
Post a Comment