【问题标题】:Populate a Custom XML Structure From a MySQL Table Row-By-Bow从 MySQL 表逐行填充自定义 XML 结构
【发布时间】:2013-06-22 14:11:50
【问题描述】:

我有这个自定义标签结构:

<warehouse>

    <frontbay>

    </frontbay>

    <bayrow>

        <bay>

        </bay>

        <bay>

        </bay>

        <bay>

        </bay>

        <bay>

        </bay>

        <bay>

        </bay>

        <bay>

        </bay>

     </bayrow>  

     <aisle>

     </aisle>       

     <bayrow>

           ...more bays...

     </bayrow>

     <aisle>

     </aisle>

    </warehouse>

&lt;bayrow&gt;s 中的&lt;bay&gt;s 放入列表中的最佳方法是什么,从第一个开始并捕获所有到最后一个,从MySQL 数据库传递数据?

  • 托架及其在 MySQL 表上的相应行将始终保持不变。
  • 本质上,它应该直接链接到我的主要自动增量 Bay。所以元素中的bay 1是'BayNumber'列的第一行。
  • 如果以后我想让 BayNumber:1 从不同的元素开始 - 不一定是结构中的第一个元素,以下哪种方法最好?

考虑到以上以及为了速度的目的,最好是:

  1. 给每个托架自己的ID

  2. 直接在每个托架内编写指向其在 MySQL 表中的位置的代码?

  3. 编写一个脚本来编译一个托架列表,并将表格行一一传递给列表中的每个元素?

    • 如果是脚本,你会推荐使用 JS 或 PHP 来获取列表吗? (我是 PHP 新手,但我知道一些 Javascript 和 jQuery)

我可能完全错过了一个更好的方法来做到这一点,例如将元素的引用放在 MySQL 表中或类似的东西,所以请告诉我填充自定义的最佳行动方案来自 MySQL 表的 XML 结构逐行

【问题讨论】:

  • 你的目标不明确。如果数据库中的数据发生变化,只需重新生成您的 XML 数据,还是我遗漏了什么?
  • @YaK XML 是一个静态模板,它不依赖于 MySQL 中的内容,这些托架总是在同一个地方,但它们并不总是在其中,所以没有意义每次都动态生成XML,有吗?
  • 我认为您将花费更多 (CPU) 时间来加载 XML 文件、查找 &lt;bay&gt;、插入数据,而不是只生成整个文件。即使没有,浪费的时间也将是微不足道的。真的,您应该重建整个文件。如果 XML 文件的其他不可变部分比较大,只需重建整个 &lt;bayrow&gt; 部分。但不要打扰“四处走动”标签。恕我直言,这是不值得的,除非最终的 XML 文件是 huge(几兆字节),并且只有很小的一部分是可变的。
  • @YaK 最少 900 个,最多 2500 个托架
  • 这是 YaK 重建整个文件的好建议。例如,如果您的生成代码中有错误,重建整个文件将使该过程更易于管理,因此您可以在这里更好地重现和修复错误。 XML 只是数据的序列化。

标签: php javascript mysql xml


【解决方案1】:

你可能想多了这个问题。生成包含 2500 个标签的 XML 文件不会花费那么长时间,除非它们的内容非常大。

我会尝试使用幼稚的方法:针对每个请求生成整个文件并密切关注服务器负载。可能会缓存结果并在数据库更改时清除缓存。

但如果你真的想走这条路,我肯定会在每个&lt;bay&gt; 标签上添加一个id 属性,匹配数据库中bay 实体的主键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-20
    • 2018-02-06
    • 2021-02-12
    • 2019-01-30
    • 1970-01-01
    • 2012-07-22
    • 2017-01-04
    • 1970-01-01
    相关资源
    最近更新 更多