【问题标题】:Creating/updating an xml file from a mysql database table with php [duplicate]使用php从mysql数据库表创建/更新xml文件[重复]
【发布时间】:2012-04-23 17:08:12
【问题描述】:

我有一个从 XML 文件获取数据的 javascript 图片库。我正在构建后端功能,以便其他人轻松更新图库。 XML 文件中所需的所有数据都可以从我的数据库中的表中获得。

<?xml version="1.0" encoding="UTF-8"?>
<portfolio>
<items> 
    <item>
        <thumbnail>images/banner001.jpg</thumbnail>
        <preview>images/preview.jpg</preview>
        <category>banner</category>
        <description>Swatch MTV </description>
    </item>
    <item>
        <thumbnail>images/banner002.jpg</thumbnail>
        <preview>images/preview.jpg</preview>
        <category>banner,campaign</category>
        <description>Nike iD</description>
    </item>
    <item>
        <thumbnail>images/banner003.jpg</thumbnail>
        <preview>images/preview.jpg</preview>
        <category>banner</category>
        <description>Sony Handycam</description>
    </item>
    <item>
        <thumbnail>images/banner006.jpg</thumbnail>
        <preview>images/preview.jpg</preview>
        <category>banner</category>
        <description>Statoil App kampagne</description>
    </item>     
    <item>
        <thumbnail>images/design006.jpg</thumbnail>
        <preview>images/preview.jpg</preview>
        <category>web</category>
        <description>Hempel Website design</description>
    </item>

</items>
</portfolio>

在这方面我有几个问题(请记住,我对 php 相当陌生):

  1. 哪个是更好/更简单的选择:更新现有的 xml 文件还是简单地用更新/更新的数据覆盖整个 xml 文件?
  2. 如何使用 php 创建相同的 xml 格式?
  3. 我一直在研究 SimpleXML 和 DOMDocument。在我的情况下,哪一个更好/更容易使用?

如果你们能给我任何帮助,我将不胜感激。如果发布代码,请附上简短的描述/解释。

如果您需要任何澄清,请告诉我。

【问题讨论】:

    标签: php xml


    【解决方案1】:

    我认为用较新/更新的数据覆盖整个 xml 文件很容易。下面是通过连接数据库创建xml数据的php文件。

    test.php

    <?php header('Content-type: application/xml');echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
    
        //connect to db here
        $query1 = "select datas";
        $res1   = mysql_query($query1);
        echo '<portfolio>';
        echo '<items>';
        while($row1 = mysql_fetch_array($res1)) 
        {
        ?>
          <item>
            <thumbnail><?php echo $row1['yourdata1']; ?></thumbnail>
            <preview><?php echo $row1['yourdata2']; ?></preview>
            <category><?php echo $row1['yourdata3']; ?></category>
            <description><?php echo $row1['yourdata4']; ?></description>
          </item>
       <?php
       } 
      ?>
      </items>
    </portfolio>
    

    如果上面的文件名是test.php,那么你可以写.htaccess重定向来重定向url到.php文件,当url为.xml时

    当 URL 为 http://yoursitename.com/test.xml 时,以下代码重定向到 test.php

    RewriteCond %{REQUEST_URI} test.xml
    RewriteRule test.xml test.php [L] 
    

    【讨论】:

    • 重定向命令是shell吗?您能否提供一个 PHP 命令,以便在任何 sql 请求之前自动完成重写?
    • 虽然此脚本有效,但您不应使用 mysql_* 系列函数,因为它们已被弃用,并将在 PHP 的未来版本中删除。请改用 mysqli 或 PDO。此外,您需要在将数据库值写入 XML 之前对其进行清理。如果一个类别被称为“朋友和家人”怎么办? & 需要作为 & 发送。此外,如果您的描述将包含 HTML 标记或标记,请将其编码或作为 CDATA 发送。
    【解决方案2】:

    ad 1) 恕我直言,更好地更新(添加/删除)条目到 xml 文件,如果您每次都生成新文件(以防有大量图像),您将不得不将大量数据保存到文件中。 .这对我来说似乎不是正确的方法。

    ad 2) php 有几个库可以帮助创建 xml 文件,例如你提到的 simplexml - 我不时使用它并且工作正常。

    ad 3) 恕我直言,它的用法很简单,易于理解,我会推荐它。我认为没有必要在这里展示它是如何工作的......谷歌有很多例子。

    以防你遇到不想在这里问的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 2014-12-06
      • 2012-01-23
      • 2014-10-16
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多