Hi,
I have a XML input like following.
<Data>
<part id="Part_1">
<part_1_item>value</part_1_item>
</part>
<part id="Part_2">
<item>value</item>
<item>value</item>
</part>
<part id="Part_2">
<item>value</item>
<item>value</item>
</part>
<part id="Part_3">
<item_3>value</item_3>
</part>
</Data>
<Data>
<part id="Part_1">
<part_1_item>value</part_1_item>
</part>
<part id="Part_2">
<item>value</item>
<item>value</item>
</part>
<part id="Part_2">
<item>value</item>
<item>value</item>
</part>
<part id="Part_3">
<item_3>value</item_3>
</part>
</Data>
I want to generate the XML output like following
<New>
<Data>
<part id="Part_1">
<part_1_item>value</part_1_item>
</part>
<part id="Part_2">
<item>abc</item>
<item>xyz</item>
</part>
<part id="Part_2">
<item>AABBCC</item>
<item>xxyyzz</item>
</part>
<part id="Part_3">
<item_3>test</item_3>
</part>
</Data>
</New>
<Data>
<part id="Part_1">
<part_1_item>value</part_1_item>
</part>
<part id="Part_2">
<item>abc</item>
<item>xyz</item>
</part>
<part id="Part_2">
<item>AABBCC</item>
<item>xxyyzz</item>
</part>
<part id="Part_3">
<item_3>test</item_3>
</part>
</Data>
</New>
In my code, I have following lines but does not work well.
DECLARE myref REFERENCE TO InputRoot.XML.Data.part[];
WHILE LASTMOVE(myref) = TRUE DO
IF UPPER(myref.(XML.attr)id) = 'PART_1' THEN
SET OutputRoot.XML.New.Data.part.(XML.attr)id = 'Part_1';
SET OutputRoot.XML.New.Data.part.part_1_item = myref.part_1_item;
ELSE
IF UPPER(myref.(XML.attr)id) = 'PART_2' THEN
SET OutputRoot.XML.New.Data.part.(XML.attr)id = 'Part_2';
SET OutputRoot.XML.New.Data.part.item = 'abc';
SET OutputRoot.XML.New.Data.part.item = 'xyz';
ELSE
IF UPPER(partyref.(XML.attr)ID) = 'PARTY_3' THEN
SET OutputRoot.XML.New.Data.part.(XML.attr)id = 'Part_3';
SET OutputRoot.XML.New.Data.part.item_3 = 'test';
END IF;
END IF;
END IF;
MOVE myref NEXTSIBLING;
END WHILE;
WHILE LASTMOVE(myref) = TRUE DO
IF UPPER(myref.(XML.attr)id) = 'PART_1' THEN
SET OutputRoot.XML.New.Data.part.(XML.attr)id = 'Part_1';
SET OutputRoot.XML.New.Data.part.part_1_item = myref.part_1_item;
ELSE
IF UPPER(myref.(XML.attr)id) = 'PART_2' THEN
SET OutputRoot.XML.New.Data.part.(XML.attr)id = 'Part_2';
SET OutputRoot.XML.New.Data.part.item = 'abc';
SET OutputRoot.XML.New.Data.part.item = 'xyz';
ELSE
IF UPPER(partyref.(XML.attr)ID) = 'PARTY_3' THEN
SET OutputRoot.XML.New.Data.part.(XML.attr)id = 'Part_3';
SET OutputRoot.XML.New.Data.part.item_3 = 'test';
END IF;
END IF;
END IF;
MOVE myref NEXTSIBLING;
END WHILE;
However, I only got following result.
<New>
<Data>
<part id="Part_1">
<part_1_item>value</part_1_item>
</part>
</Data>
</New>
<Data>
<part id="Part_1">
<part_1_item>value</part_1_item>
</part>
</Data>
</New>
Could anybody tell me what's wrong here?
Thanks.
Mike
Do you Yahoo!?
The New Yahoo! Search - Faster. Easier. Bingo.