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条)

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的