【发布时间】:2011-02-06 06:16:36
【问题描述】:
我现在正在开发一个 Web 应用程序,用户在其中与将文件导出为 XML 的桌面软件进行交互。
我很好奇是否有办法从 XML 文件中获取数据并使用 ColdFusion 将该数据插入到 mySQL 数据库中?
【问题讨论】:
标签: mysql xml database coldfusion
我现在正在开发一个 Web 应用程序,用户在其中与将文件导出为 XML 的桌面软件进行交互。
我很好奇是否有办法从 XML 文件中获取数据并使用 ColdFusion 将该数据插入到 mySQL 数据库中?
【问题讨论】:
标签: mysql xml database coldfusion
当然可以,ColdFusion 提供了强大的 XML 处理工具。
通常您需要使用XmlParse 将XML 文件解析为XML 文档对象,并使用XmlSearch 使用XPath 语言搜索它。获取的数据可轻松用于插入数据库或任何其他操作。
请注意,目前还有更多有用的XML functions,例如您可能对在解析之前验证 XML 感兴趣。
如果您在特定情况下需要帮助 - 请扩展您的问题或询问其他问题。
【讨论】:
如果您正在处理解析时适合内存的 XML 文档,@Sergii 的答案是正确的方法。另一方面,XML 本身就很冗长,而 ColdFusion 使用 DOM XML 解析器很容易导致内存不足错误。
在那种情况下,考虑到 MySQL 和 ColdFusion,我看到了两条替代路径。一种是将桌面应用程序中的数据导出为 CSV,如果可能的话。然后使用 MySQL 的LOAD DATA INFILE,您可以从 ColdFusion 调用它来导入数据。这可能是最快的表现。
如果您无法更改桌面应用程序的导出格式,请考虑改用Java StAX parser。 See my answer from another question for an example of how to do this with ColdFusion。这具有在任何给定时间仅将部分 XML 文档拉入内存的优点,但比 DOM 解析器更难使用。因此,您不会收到 OOM 错误。
注意,Java 还提供了第三种类型的解析器 - SAX - 与不将整个文档加载到内存中的 StAX 解析器具有相同的质量。然而,这是 IMO 使用的一种更困难的方法,因此是 StAX 建议。
【讨论】: