用于提取xml标记值并将其转换为CSV的perl代码
问题描述:
我对Perl和编程非常陌生...请帮助我....
我有以下提到的XML:
Hi,
i m very new to perl and programming...pls help me....
i have an XML which is below mentioned:
<Body>
<FreemanFees>
<SdcLoanFacilityNumber>133752115</SdcLoanFacilityNumber>
<DealId>34390939283</DealId>
<Tranche>
<SdcDealNumber>133753116</SdcDealNumber>
<ManagerFeeAndCredits>
<ManagerFeeAndCredit>
<FreemanFeesForManager scale="6" currencyId="500110" sdcCurrencyCode="US">0</FreemanFeesForManager>
<ManagerNumberForFreemanFee>8320</ManagerNumberForFreemanFee>
</ManagerFeeAndCredit>
</ManagerFeeAndCredits>
</Tranche>
</FreemanFees>
<FreemanFees>
<SdcLoanFacilityNumber>133754115</SdcLoanFacilityNumber>
<DealId>34390939284</DealId>
<Tranche>
<SdcDealNumber>133755116</SdcDealNumber>
<ManagerFeeAndCredits>
<ManagerFeeAndCredit>
<FreemanFeesForManager scale="6" currencyId="500110" sdcCurrencyCode="US">0</FreemanFeesForManager>
<ManagerNumberForFreemanFee>9678</ManagerNumberForFreemanFee>
</ManagerFeeAndCredit>
<ManagerFeeAndCredit>
<FreemanFeesForManager scale="6" currencyId="500110" sdcCurrencyCode="US">0</FreemanFeesForManager>
<ManagerNumberForFreemanFee>5390</ManagerNumberForFreemanFee>
</ManagerFeeAndCredit>
</ManagerFeeAndCredits>
</Tranche>
</FreemanFees>
</Body>
我在方括号后面给了空格,否则它将被转换...
我的代码如下:
i have given space after brackets else it is getting converted...
and my code is as below:
#!/usr/bin/perl
# Script to illustrate how to parse a simple XML file
# and pick out all the values for a specific element, in
# this case all the titles.
# use strict;
use XML::Simple;
se Data::Dumper;
# create object
$xml = new XML::Simple (KeyAttr=>[]);
# read XML file
$data = $xml->XMLin("fm.xml");
my $booklist = XMLin('fm.xml'); #booklist is the array
# print Dumper($booklist);
foreach my $FreemanFees (@{$booklist->{FreemanFees}}) {
print
$FreemanFees->{SdcLoanFacilityNumber} , "," ,
$FreemanFees->{DealId} ,",",
$FreemanFees->{Tranche}->{SdcDealNumber} , "," ,
$FreemanFees->{Tranche}->{ManagerFeeAndCredits}->{ManagerFeeAndCredit}->{FreemanFeesForManager}->{ManagerNumberForFreemanFee}, ",",
$FreemanFees->{Tranche}->{ManagerFeeAndCredits}->{ManagerFeeAndCredit}->{FreemanFeesForManager}->{currencyId},",",
$FreemanFees->{Tranche}->{ManagerFeeAndCredits}->{ManagerFeeAndCredit}->{FreemanFeesForManager}->{sdcCurrencyCode} , "," ,
$FreemanFees->{Tranche}->{ManagerFeeAndCredits}->{ManagerFeeAndCredit}->{FreemanFeesForManager}->{scale}, ",",
$FreemanFees->{Tranche}->{ManagerFeeAndCredits}->{ManagerFeeAndCredit}->{FreemanFeesForManager}->{content} , "," ,"\n";
}
我的程序输出如下:
133752115,34390939283,133753116,,500110,US,6,0,
133754115,34390939284,133755116 ,,,,,
问题是我无法获取在同一节点中重复的所有标签值....有人可以在这方面帮助我还是可以指导我...
问候
Amar
my output of my program is as follows:
133752115,34390939283,133753116,,500110,US,6,0,
133754115,34390939284,133755116,,,,,,
problem is i m not able to fetch all the tag values which are repeating in the same node....can anyone help me in this aspect or guide me...
Regards
Amar
答
xml = 新 XML :: Simple(KeyAttr => [] ); # 读取XML文件
xml = new XML::Simple (KeyAttr=>[]); # read XML file
数据 =
data =
xml -> XMLin(" ); 我
xml->XMLin("fm.xml"); my