【问题标题】:Combining two xml files php结合两个xml文件php
【发布时间】:2018-04-17 15:17:34
【问题描述】:

文件 1

<?xml version="1.0" encoding="utf-8"?>
<urunler>
  <urun>
    <urunkod>2296</urunkod>
    <urunadi><![CDATA[Nuk Kauçuk Emzik No.3 (18+ Ay) -Fun-]]></urunadi>
    <desi>1</desi>
    <stok>113</stok>
    <satis>5.46</satis>
  </urun>
</urunler>

文件 2

<urunler>
  <urun id="2296" secenekid="4" grup="YAS;" ozellik="1" fiyat="0" agirlik="0" Stok="0"/>
  <urun id="2296" secenekid="5" grup="YAS;" ozellik="2" fiyat="0" agirlik="0" Stok="0"/>
</urunler>

我想得到:

<?xml version="1.0" encoding="utf-8"?>
<urunler>
  <urun>
    <urunkod>2296</urunkod>
    <urunadi><![CDATA[Nuk Kauçuk Emzik No.3 (18+ Ay) -Fun-]]></urunadi>
    <desi>1</desi>
    <stok>113</stok>
    <satis>5.46</satis>
    <options>
      <option>
        <urunid>2296</urunid>
        <grup>YAS</grup>
        <ozellik>1</ozellik>
        <stok>0</stok>
      </option>
      <option>
        <urunid>2296</urunid>
        <grup>YAS</grup>
        <ozellik>2</ozellik>
        <stok>0</stok>
      </option>
    </options>
  </urun>
</urunler>

【问题讨论】:

  • 我对这个主题了解不多,之前没试过,期待您的帮助
  • 这里不是解决你问题的地方,请阅读How do I ask a good question?

标签: php xml merge


【解决方案1】:

看来你需要这个案例的排序算法逻辑方面的帮助,我可以试着帮助你。

首先,您需要将 xml 内容分配给您的第一个 xml 文件中的某个 php 变量:

$file_1 = simplexml_load_file("file_1.xml") or die("Error: 
Cannot create object";

现在您必须解析第二个 xml 文件以获取每个 id 的所有属性,并将您的选项集合作为辅助数组:

$options = array();

$file_2 = simplexml_load_file("file_2.xml") or die("Error: Cannot create object");
foreach ($file_2->urunler->urun as $urun_2) {
   $id = $urun_2('id');
   $grup = $urun_2('grup'); // you may apply some filter here
   $ozellik = $urun_2('ozellik');
   $stok = $urun_2('stok');

   array_push($options, array(
      'id' => $id,
      'grup' => $grup,
      'ozellik' => $ozellik,
      'stok' => $stok
   );
}

现在您可以使用 id 比较通过多个 foreach 循环将子节点添加到您的第一个 xml 文件:

foreach ($file_1->urunler->urun as $urun_1) { // for each node from file 1
   foreach ($options as $option) { // for each option from your helper collection
      if ($urun_1->urunkod == $option['id']) { // if id from some of your option is equal to the current node from the file 1
         if ($urun_1->options == null) { // add options node if not exist
            $urun_1->addChild("options");
         }

         $option = $urun_1->options->addChild("option");

         $option->addChild("urunid");
         $option->addChild("grup");
         $option->addChild("ozellik");
         $option->addChild("stok");

         $option->urunid = $option['id'];
         $option->grup = $option['grup'];
         $option->ozellik = $option['ozellik'];
         $option->stok = $option['stok'];
      }
   }
}

$file_1->save('file_1_v2.xml');‘

可能对你也有帮助:如何在php中使用简单的xmlhttps://www.w3schools.com/php/php_xml_simplexml_get.asp

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    相关资源
    最近更新 更多