我在我的XML文件中有这个:
<product name="iphone">
<variant name="iphone" product_number="12345" price="500" picture="iphone.jpg">
<description><![CDATA[iphone]]></description>
<short_description><![CDATA[]]></short_description>
<deliverytime><![CDATA[]]></deliverytime>
<options>
<option group="Color" option="Black" />
</options>
</variant>
</product>
<product name="iphone">
<variant name="iphone" product_number="12345" price="500" picture="iphone.jpg">
<description><![CDATA[iphone]]></description>
<short_description><![CDATA[]]></short_description>
<deliverytime><![CDATA[]]></deliverytime>
<options>
<option group="Color" option="White" />
</options>
</variant>
</product>
我想将它合并到这里(注意我合并了options标签):
<product name="iphone">
<variant name="iphone" product_number="12345" price="500" picture="iphone.jpg">
<description><![CDATA[iphone]]></description>
<short_description><![CDATA[]]></short_description>
<deliverytime><![CDATA[]]></deliverytime>
<options>
<option group="Color" option="Black" />
<option group="Color" option="White" />
</options>
</variant>
</product>
最好我想在记忆中完成所有操作,因为我会在之后进一步处理。
答案 0 :(得分:0)
这是不容易的,我正在寻找同样的...一个问题是想知道哪个iphone的意思等等。存在合并功能但在我的情况下它们并没有很好地工作:{{3当你找不到解决方案时,我认为是时候自己做了并报告你:
更新1:函数xml_attribute
和addxmlelement
来自普通的php页面(我复制到结尾)。我写的函数非常单独用于一个案例,并不适用于所有合并情况。我为我创作了一个小说。
XML:Neu(新添加)
<varrDaten>
<person>
<street id="adder">adder</street>
<loc>land AAA</loc>
</person>
<person>
<street id="exister">exister street</street>
<loc>land gg</loc>
</person>
<person>
<street id="updater">street is uptodate</street>
<loc>land is updated</loc>
</person>
</varrDaten>
<varrDaten>
<person>
<street id="adder">adder</street>
<loc>land AAA</loc>
</person>
<person>
<street id="exister">exister street</street>
<loc>land gg</loc>
</person>
<person>
<street id="updater">street is uptodate</street>
<loc>land is updated</loc>
</person>
</varrDaten>
XML(存在)
<varrDaten>
<person>
<street id="minuser">minuser</street>
<loc>land 0</loc>
</person>
<person>
<street id="exister">exister street</street>
<loc>land lon</loc>
</person>
<person>
<street id="updater">update need street</street>
<loc>land need update</loc>
</person>
</varrDaten>
function simplexml_merge2($xpOld,$xpNeu) { $selIDS=$xpNeu->xpath('//street[not(@id="0")]'); foreach($selIDS as $ident) { //existiert in vorhandennen? $xpSelV=$xpOld->xpath('//person/street[@id="'.xml_attribute($ident,'id').'"]'); if(count($xpSelV)>0) { echo "YES EXISTS".(string)$xpSelV[0][0]."<>".(string)$ident[0]."添加。 FUNC
"; //test of value maybe.. if(!((string)$xpSelV[0][0]==(string)$ident[0])) { //HERE YOU CAN ADD CRITERIA WHICH SHOULD BE SYCNRONISED IF ALREADY EXISTS echo "VAL not the same"; $xp2Ef=$xpOld->xpath('//person[./street[@id="'.xml_attribute($ident,'id').'"]]'); $xp2Ef[0][0]=(string)$ident[0]; } } else { echo "NOOO:".$xpNeu[0]; $xpEF=$xpOld->xpath('//varrDaten'); echo '//person[./street[@id="'.xml_attribute($ident,'id').'"]]'; $xp2Ef=$xpNeu->xpath('//person[./street[@id="'.xml_attribute($ident,'id').'"]]'); AddXMLElement($xpEF[0],$xp2Ef[0]); } } }
<varrDaten>
<person>
<street id="minuser">minuser</street>
<loc>land 0</loc>
</person>
<person>
<street id="exister">exister street</street>
<loc>land lon</loc>
</person>
<person>
<street id="updater">update need street</street>
<loc>land need update</loc>
</person>
</varrDaten>