从PHP创建XML文件

时间:2018-10-24 09:26:13

标签: php xml

我正在尝试通过PHP为Google Merchant Center创建XML文件。

我以前在创建站点地图时做过同样的事情,但是现在遇到了问题。

$xmlString = '<?xml version="1.0" encoding="UTF-8"?>';
$xmlString .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';

$xmlString .= '<url>';
$xmlString .= '<loc>example.com</loc>';
$xmlString .= '<lastmod>'.date(DATE_ATOM,time()).'</lastmod>';
$xmlString .= '<changefreq>daily</changefreq>';
$xmlString .= '<priority>1.0</priority>';
$xmlString .= '</url>';
$xmlString .= '</urlset>';

$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlString);

$dom->save('../sitemap.xml');

除了我显然通过查询数据库来创建更多URL之外,这几乎是创建站点地图所必需的。

但是随后,我对产品Feed进行了或多或少的完全相同的操作,但是它不起作用。

$xmlString .= '<?xml version="1.0" encoding="UTF-8"?>';
$xmlString .= '<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">';
$xmlString .= '<channel>';

    $xmlString .= '<title>Product Feed</title>';
    $xmlString .= '<link>https://www.example.com/</link>';
    $xmlString .= '<description>Product Feed</description>';

        $xmlString .= '<item>';
            $xmlString .= '<g:id>'.$product_id.'</g:id>';
            $xmlString .= '<title>'.$product_name.'</title>';
            $xmlString .= '<description>'.$product_description.'</description>';
            $xmlString .= '<link>https://www.example.com/product/'.$product_url.'</link>';
            $xmlString .= '<g:condition>new</g:condition>';
            $xmlString .= '<g:price>'.$rounded_lowest_sale_price.'</g:price>';
            $xmlString .= '<g:availability>in stock</g:availability>';
            $xmlString .= '<g:image_link>https://www.example.com/media/product_images/'.$first_image.'</g:image_link>';
            $xmlString .= '<g:mpn>'.$model_no.'</g:mpn>';
            $xmlString .= '<g:brand>'.$brand.'</g:brand>';
            $xmlString .= '<g:google_product_category>Business & Industrial > Material Handling</g:google_product_category>';
        $xmlString .= '</item>';
    }

$xmlString .= '</channel>';
$xmlString .= '</rss>';

echo $xmlString;
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlString);

$dom->save('../product_feeds/product_feed_int.xml');

它保存XML文件,但其中包含的所有内容是:

<?xml version="1.0"?>

甚至没有UTF-8编码。

任何帮助或建议,将不胜感激。

2 个答案:

答案 0 :(得分:0)

这可能有帮助

 <?php
       $xmldoc = new DOMDocument();
       $xmldoc->encoding = 'utf-8';
       $xmldoc->xmlVersion = '1.0';
       $xmldoc->formatOutput = true;
       $xml_file_name = 'xmlfile.xml';
       $root = $xmldoc->createElement('Cars');
       $car_node = $xmldoc->createElement('car');
       $attr_movie_id = new DOMAttr('car_model', 'ritz');
       $car_node->setAttributeNode($attr_movie_id);
       $child_node_title = $xmldoc->createElement('Make', 'Maruti');
       $car_node->appendChild($child_node_title);
       $child_node_year = $xmldoc->createElement('Year', 2012);
       $car_node->appendChild($child_node_year);
       $child_node_genre = $xmldoc->createElement('Type', 'Hatchback');
       $car_node->appendChild($child_node_genre);
       $child_node_ratings = $xmldoc->createElement('Ratings', 6.2);
       $car_node->appendChild($child_node_ratings);
       $root->appendChild($car_node);
       $xmldoc->appendChild($root);
       $xmldoc->save($xml_file_name);
       echo "$xml_file_name  created";
    ?>

答案 1 :(得分:0)

如果您不使用DOMDocument创建xml,则可以将字符串直接放入文件中

file_put_contents('../product_feeds/product_feed_int.xml', $xmlString);

考虑在

中将&amp;用于&
  

工商业