0

このxml1のような2つのxmlがあります:

 <Title>Sea Change</Title>
    <thirdParty_ID></thirdParty_ID>
    <Animation_Indicator>N</Animation_Indicator>
    <Blackout_Indicator>N</Blackout_Indicator>
<SD_Purchase_Zoe></SD_Purchase_Zoe>
    <SD_Purchase_Window_Start_Zoe></SD_Purchase_Window_Start_Zoe>
    <SD_Purchase_Window_End_Zoe></SD_Purchase_Window_End_Zoe>
    <SD_Licensing_Window_start_Zoe></SD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_start_Zoe>2012-04-01</HD_Licensing_Window_start_Zoe>
    <HD_Licensing_Window_end_Zoe>2013-04-01</HD_Licensing_Window_end_Zoe>
    <HD_Purchase_Window_Start_Zoe>2012-04-01</HD_Purchase_Window_Start_Zoe>

xml2:

<Asset_Record>
    <Title>Sea Change</Title>
    <thirdParty_ID></thirdParty_ID>
    <Animation_Indicator>N</Animation_Indicator>
    <Blackout_Indicator>N</Blackout_Indicator>
<SD_Purchase_Zoe>Y</SD_Purchase_Zoe>
    <SD_Purchase_Window_Start_Zoe>2012-04-01</SD_Purchase_Window_Start_Zoe>
    <SD_Purchase_Window_End_Zoe>2013-04-01</SD_Purchase_Window_End_Zoe>
    <SD_Licensing_Window_start_Zoe>2012-04-01</SD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_start_Zoe></HD_Licensing_Window_start_Zoe>
    <HD_Licensing_Window_end_Zoe></HD_Licensing_Window_end_Zoe>
    <HD_Purchase_Window_Start_Zoe></HD_Purchase_Window_Start_Zoe>

xml1 と xml2 をマージして、次のように出力したいと思います

<Title>Sea Change</Title>
    <thirdParty_ID></thirdParty_ID>
    <Animation_Indicator>N</Animation_Indicator>
    <Blackout_Indicator>N</Blackout_Indicator>
<SD_Purchase_Zoe>Y</SD_Purchase_Zoe>
    <SD_Purchase_Window_Start_Zoe>2012-04-01</SD_Purchase_Window_Start_Zoe>
    <SD_Purchase_Window_End_Zoe>2013-04-01</SD_Purchase_Window_End_Zoe>
    <SD_Licensing_Window_start_Zoe>2012-04-01</SD_Licensing_Window_start_Zoe>
    <SD_Licensing_Window_start_Zoe></SD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_start_Zoe>2012-04-01</HD_Licensing_Window_start_Zoe>
    <HD_Licensing_Window_end_Zoe>2013-04-01</HD_Licensing_Window_end_Zoe>
    <HD_Purchase_Window_Start_Zoe>2012-04-01</HD_Purchase_Window_Start_Zoe>

最初に、これら 2 つの xml が同じタイトルを持っているかどうかを確認する必要があります。同じタイトルを持っている場合はそれらをマージし、それらのいずれかから見つけることができる場合はすべての値をマージします。

返信ありがとうございます。

4

1 に答える 1

0

私は次のように書いています:

$x1 = <<<XML
<xml>
<Title>Sea Change</Title>
<thirdParty_ID></thirdParty_ID>
<Animation_Indicator>N</Animation_Indicator>
<Blackout_Indicator>N</Blackout_Indicator>
<SD_Purchase_Zoe></SD_Purchase_Zoe>
<SD_Purchase_Window_Start_Zoe></SD_Purchase_Window_Start_Zoe>
<SD_Purchase_Window_End_Zoe></SD_Purchase_Window_End_Zoe>
<SD_Licensing_Window_start_Zoe></SD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_start_Zoe>2012-04-01</HD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_end_Zoe>2013-04-01</HD_Licensing_Window_end_Zoe>
<HD_Purchase_Window_Start_Zoe>2012-04-01</HD_Purchase_Window_Start_Zoe>
</xml>
XML;

$x2 = <<<XML
<xml>
<Title>Sea Change</Title>
<thirdParty_ID></thirdParty_ID>
<Animation_Indicator>N</Animation_Indicator>
<Blackout_Indicator>N</Blackout_Indicator>
<SD_Purchase_Zoe>Y</SD_Purchase_Zoe>
<SD_Purchase_Window_Start_Zoe>2012-04-01</SD_Purchase_Window_Start_Zoe>
<SD_Purchase_Window_End_Zoe>2013-04-01</SD_Purchase_Window_End_Zoe>
<SD_Licensing_Window_start_Zoe>2012-04-01</SD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_start_Zoe></HD_Licensing_Window_start_Zoe>
<HD_Licensing_Window_end_Zoe></HD_Licensing_Window_end_Zoe>
<HD_Purchase_Window_Start_Zoe></HD_Purchase_Window_Start_Zoe>
</xml>
XML;

$oXML1 = new SimpleXMLElement($x1);
$oXML2 = new SimpleXMLElement($x2);

$oOutput = new SimpleXMLElement('<xml></xml>');

foreach ( $oXML1 as $key => $value )
{
    if ( empty($value[0]) )
        $oOutput->addChild($key, $oXML2->{$key}[0]);
    else
        $oOutput->addChild($key, $value[0]);
}

print_r($oOutput->asXML());
于 2012-06-29T20:12:23.120 に答える