dougao2830 2014-06-04 03:09
浏览 65
已采纳

使用XSL从URL合并2 XML

i'm working with an API that gives me two URLs to pull the content from.

The first one gives me a list of products but with limited information about each.

The second url, by using ?productId=1 i can pull the rest of the data about a specific product.

What i'm trying to do is to merge these two things into one, so i could easily import to a wordpress or somewhere else later on.

I've tried doing it with DOM+PHP and i couldn't get it to work, perhaps the xsl would be the better solution?

File1.svc

<products>
  <product>
    <product_id> 1 </product_id>
    <product_name> Product 1 </product_name>
  </product>
  <product>
    <product_id> 2 </product_id>
    <product_name> Product 2 </product_name>
  </product>
</products>

File2.svc?productId=1

<results>
  <product product_id="1">
    <price_from> 100 </price_from>
    <price_to> 300 </price_to>
  </product>
</results>

Result i want to export:

<products>
  <product>
    <product_id> 1 </product_id>
    <product_name> Product 1 </product_name>
    <price_from> 100 </price_from>
    <price_to> 300 </price_to>
  </product>
  <product>
    <product_id> 2 </product_id>
    <product_name> Product 2 </product_name>
    <price_from> 400 </price_from>
    <price_to> 500 </price_to>
  </product>
</products>
  • 写回答

3条回答 默认 最新

  • dongshan3759 2014-06-04 03:52
    关注

    It should work well:

    #File1.svc
    $xml_A = <<<XML
    <products>
        <product>
            <product_id> 1 </product_id>
            <product_name> Product 1 </product_name>
        </product>  
    </products>
    XML;
    
    #File2.svc?productId=1
    $xml_B = <<<XML
    <results>
        <product product_id="1">
            <price_from> 100 </price_from>
            <price_to> 300 </price_to>
        </product>
    </results>
    XML;
    
    $a = new SimpleXMLElement($xml_A); //or new SimpleXMLElement($URL, null, true);
    $b = new SimpleXMLElement($xml_B); //or new SimpleXMLElement($URL, null, true);
    
    $priceFromElement = $b->product[0]->price_from;
    $priceToElement   = $b->product[0]->price_to;
    
    $a->product[0]->addChild($priceFromElement->getName(), $priceFromElement);
    $a->product[0]->addChild($priceToElement->getName(), $priceToElement);
    
    echo $a->asXML(); //merged
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备