Mohd Wasif Ответов: 0

Как сделать существующий узел дочерним узлом в 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

Да правильно

0 Ответов