Как сделать существующий узел дочерним узлом в XML во время выполнения
Всем Привет,
У меня есть xml, как показано ниже :
<PDB> <PRODUCER> <FIRM> <ENTITY_BIOGRAPHIC> <ADDRESSES> <STATE name="AK"> <ADDRESS branch_id="41027004"> <DATE_UPDATED>11/08/2013</DATE_UPDATED> <COUNTRY>U.S.A.</COUNTRY> </ADDRESS> </STATE> <STATE name="AL"> <ADDRESS branch_id="41027005"> <DATE_UPDATED>11/08/2015</DATE_UPDATED> <COUNTRY>U.S.A.</COUNTRY> </ADDRESS> </STATE> </ADDRESSES> <CONTACT_INFOS> <STATE name="AK"> <CONTACT_INFO branch_id="41027004"> <BUSINESS_PHONE>206-448-9400</BUSINESS_PHONE> <BUSINESS_PHONE_UPDATE_DATE>06/08/2015</BUSINESS_PHONE_UPDATE_DATE </CONTACT_INFO> </STATE> <STATE name="AK"> <CONTACT_INFO branch_id="41027005"> <BUSINESS_PHONE>206-448-9400</BUSINESS_PHONE> <BUSINESS_PHONE_UPDATE_DATE>06/08/2015</BUSINESS_PHONE_UPDATE_DATE </CONTACT_INFO> </STATE> </CONTACT_INFOS> <ENTITY_BIOGRAPHIC> </FIRM> </PRODUCER> </PDB>
If the branch_id of <ADDRESS> node under <ADDRESSES> node for a State is equal to branch_id of <ADDRESS> node under <CONTACT_INFOS> then all the child nodes of same state of <CONTACT_INFOS> should become child nodes of <ADDRESS> nodes of a state under <ADDRESSES> nodes. The output should be as below:
<PDB> <PRODUCER> <FIRM> <ENTITY_BIOGRAPHIC> <ADDRESSES> <STATE name="AK"> <ADDRESS branch_id="41027004"> <DATE_UPDATED>11/08/2013</DATE_UPDATED> <COUNTRY>U.S.A.</COUNTRY> <BUSINESS_PHONE>206-448-9400</BUSINESS_PHONE> <BUSINESS_PHONE_UPDATE_DATE>06/08/2015</BUSINESS_PHONE_UPDATE_DATE </ADDRESS> </STATE> <STATE name="AL"> <ADDRESS branch_id="41027005"> <DATE_UPDATED>11/08/2015</DATE_UPDATED> <COUNTRY>U.S.A.</COUNTRY> <BUSINESS_PHONE>206-448-9400</BUSINESS_PHONE> <BUSINESS_PHONE_UPDATE_DATE>06/08/2015</BUSINESS_PHONE_UPDATE_DATE </ADDRESS> </STATE> </ADDRESSES> <ENTITY_BIOGRAPHIC> </FIRM> </PRODUCER> </PDB>
Что я уже пробовал:
Я могу удалять и добавлять новые узлы, но не могу объединить узел на основе branch_id.
Пожалуйста, помогите мне.
Maciej Los
Что ж...
1) Ваш xml не очень хорошо сформирован!
ля </BUSINESS_PHONE_UPDATE_DATE
узел не содержит окончания >
,
Б) а <ENTITY_BIOGRAPHIC>
не имеет эквивалентного конечного тега.
2) конечный результат не соответствует xml-данным: adresses(AK и AL) => contact_info (только AK).
Пожалуйста, просмотрите свой вопрос и обновите его.
Кажется, условием для объединения данных является: Addresses->State->name == Contact_infos->State->name &&
Address->branch_id == Contact_info->branch_id
Я прав?
Mohd Wasif
Да правильно