При создании строки xml в php мой скрипт просто останавливается - PullRequest
0 голосов
/ 25 января 2012

Я просто пытаюсь создать эту строку

$post_string ='<?xml version="1.0" ?>
  <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:noNamespaceSchemaLocation="amznenvelope.xsd">
  <Header>
  <DocumentVersion>1.01</DocumentVersion>
  <MerchantIdentifier>Outdoor_outlet_seller</MerchantIdentifier>
  </Header>
  <MessageType>Product</MessageType>
  <PurgeAndReplace>true</PurgeAndReplace>
  <Message>
    <MessageID>' . rand(1,1000) . '</MessageID>
    <OperationType>Update</OperationType>
  <Product>
    <SKU>'. $product->getSKU() . error_log("Got sku of product" . $product->getSKU()).'</SKU>

    <ProductTaxCode>A_GEN_TAX</ProductTaxCode>
    <LaunchDate>' . date('Y-m-d') . 'T' . date('H:i:sO') . '</LaunchDate>
  <DescriptionData>
    <Brand>'. $product->getBrand() . error_log($product->getBrand()) . '</Brand>
    <Description>' . $product->getDescription() . '</Description>
    <ItemType>Sports & Outdoors</ItemType>
  </DescriptionData>
    </Message>
  </AmazonEnvelope>';

По какой-то причине все просто останавливается, когда сценарий достигает строки «Бренд» в XML, и я не могу понять, почему. У кого-нибудь здесь была подобная проблема? Было бы здорово, если бы кто-то мог помочь мне с этим :) Спасибо!

Ответы [ 2 ]

1 голос
/ 25 января 2012

Может быть, значение узла не в допустимом формате xml, поэтому идите и скажите xml не анализировать значение ... Используйте теги cdata <Brand><![CDATA['. $product->getBrand() . error_log($product->getBrand()) . ']]></Brand> ....

Для справки вы можете прочитать: [w3schools на xml CDATA]

0 голосов
/ 25 января 2012

Ваш синтаксис XML в порядке и генерирует что-то похожее, как показано ниже.

1.01 Outdoor_outlet_seller

Product
true

124
Update

prod_sku1

A_GEN_TAX
2012-01-24T23:02:33+0000

prod_brand1
prod_descr
Sports & Outdoors

Я предполагаю, что что-то в значениях, возвращаемых функциями $ product, создает проблему. Попробуйте повторить значения в одиночку, чтобы увидеть, если что-то неожиданно

...