ソース XML は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<MT_A2B>
<Header>
<ReceiverID>XYZ Pvt Ltd.</ReceiverID>
<Date>2013-05-16</Date>
<FileId>1</FileId>
<Version>1.0</Version>
</Header>
<Invoice>
<ItemsInfo>
<Item id="A1">
<AccountID>1234567890</AccountID>
<AccountName>657-6746-AM2</AccountName>
<AccountType>CONTRACT</AccountType>
<Type>/item/cxn/vpn/cycle</Type>
<Name>VPN cycle fees</Name>
<SessionCount>3</SessionCount>
<NetAmount>3000.00</NetAmount>
<Tot>
<UsageClass>AOC</UsageClass>
<SessionCount>3</SessionCount>
<Quantity>4</Quantity>
<FreeQuantity>1</FreeQuantity>
<NetAmount>3000.00</NetAmount>
<ZoneTot>
<ZoneDescription>To Category 2</ZoneDescription>
<GLID>300|A1000001|F1000001|50001</GLID>
<SetUpFee>0.00000</SetUpFee>
<Unit>1</Unit>
<UnitPrice>1000.0000</UnitPrice>
<SessionCount>2</SessionCount>
<Quantity>3</Quantity>
<FreeQuantity>1</FreeQuantity>
<NetAmount>2000.00</NetAmount>
</ZoneTot>
<ZoneTot>
<ZoneDescription>To Category 2</ZoneDescription>
<GLID>300|A1000001|F1000001|50001</GLID>
<SetUpFee>0.00000</SetUpFee>
<Unit>1</Unit>
<UnitPrice>1000.0000</UnitPrice>
<SessionCount>1</SessionCount>
<Quantity>1</Quantity>
<FreeQuantity>0</FreeQuantity>
<NetAmount>1000.00</NetAmount>
</ZoneTot>
</Tot>
</Item>
</ItemsInfo>
</Invoice>
</MT_A2B>
Tot ノードに複数の ZoneTot があるかどうかを確認する必要があります。はいの場合、2 番目の ZoneTot ノードに対応するために、Tot ノードをもう 1 つ作成する必要があります。基本的に、各 Tot ノードには ZoneTot ノードが 1 つだけある必要があります。Tot ノードに複数の ZoneTot ノードがある場合は、適切にフォーマットする必要があります。2 番目の Tot ノードにあるフィールドを計算する必要がありますが、ここでは触れません。まず、XML をフォーマットするという基本的な要件を満たす必要があります。
出力 XML を以下のようにしたいと考えています。
<?xml version="1.0" encoding="UTF-8"?>
<MT_A2B>
<Header>
<ReceiverID>XYZ Pvt Ltd.</ReceiverID>
<Date>2013-05-16</Date>
<FileId>1</FileId>
<Version>1.0</Version>
</Header>
<Invoice>
<ItemsInfo>
<Item id="A1">
<AccountID>1234567890</AccountID>
<AccountName>657-6746-AM2</AccountName>
<AccountType>CONTRACT</AccountType>
<Type>/item/cxn/vpn/cycle</Type>
<Name>VPN cycle fees</Name>
<SessionCount>3</SessionCount>
<NetAmount>3000.00</NetAmount>
<Tot>
<UsageClass>AOC</UsageClass>
<SessionCount>3</SessionCount>
<Quantity>4</Quantity>
<FreeQuantity>1</FreeQuantity>
<NetAmount>3000.00</NetAmount>
<ZoneTot>
<ZoneDescription>To Category 2</ZoneDescription>
<GLID>300|A1000001|F1000001|50001</GLID>
<SetUpFee>0.00000</SetUpFee>
<Unit>1</Unit>
<UnitPrice>1000.0000</UnitPrice>
<SessionCount>2</SessionCount>
<Quantity>3</Quantity>
<FreeQuantity>1</FreeQuantity>
<NetAmount>2000.00</NetAmount>
</ZoneTot>
</Tot>
<Tot>
<UsageClass>AOC</UsageClass>
<SessionCount>3</SessionCount>
<Quantity>4</Quantity>
<FreeQuantity>1</FreeQuantity>
<NetAmount>3000.00</NetAmount>
<ZoneTot>
<ZoneDescription>To Category 2</ZoneDescription>
<GLID>300|A1000001|F1000001|50001</GLID>
<SetUpFee>0.00000</SetUpFee>
<Unit>1</Unit>
<UnitPrice>1000.0000</UnitPrice>
<SessionCount>1</SessionCount>
<Quantity>1</Quantity>
<FreeQuantity>0</FreeQuantity>
<NetAmount>1000.00</NetAmount>
</ZoneTot>
</Tot>
</Item>
</ItemsInfo>
</Invoice>
</MT_A2B>