php - 如何使用 PHP 将 XML 文件中的数据解析为 MySQL 表,这些 XML 文件的格式不通用且可以更改?
问题描述
问题:
我将用 PHP 构建一个基于 Web 的工具,以帮助用户访问分散在一组 XML 文件中的信息,我计划将数据从这些 XML 文件存储到 MySQL 中的表中。我在网上看到的很多例子似乎都是基于从一堆使用相同格式的 XML 文件中导入数据。我没有那种奢侈。
我如何能够解析具有以下因素的 XML 文件?
- 此集合中有多个类别的 XML 文件,每个类别都有不同的格式和信息类型来区分每个类别。理想情况下,我会为每个类别创建一个单独的表。然而...
- 在我事先不知情的情况下,可以将其他新类别的 XML 文件添加到此集合中。
- 任何现有类别都可以对其格式进行重组和/或其中的信息类型可以增加或减少,这也是在我事先不知情的情况下。
- 即使在同一类别的 XML 文件中,也可能存在具有过时格式版本的旧文件。
预期成绩:
使用 XML 集合与一组人有关的示例,如果您搜索“棕色眼睛”,您将获得列出棕色眼睛的每个人的搜索结果列表页面。其中一页是“罗伯特”。如果单击此结果,您将转到显示来自 Robert XML 文件的所有信息的页面(稍后处理可读格式)。
解决方案
您只能创建一个自学习解析器,只要它在XML
. 基本上有两种选择:或者建立一个数据模型,它在某个时间点匹配所有记录 - 或者将混乱塞进一个 noSQL 数据库,这并不一定会使混乱变得更好。“一刀切”(将非结构化数据填充到结构化数据库中)不是一种选择。
推荐阅读
- python - 使用烧瓶端点返回未在本地存储的图像
- bash - 尝试在 bash 中打印星号但出现错误
- java - 尝试启动 ZetaSQL 计划程序时出错
- python - 查询的最小异或
- c# - .NET Core Web API 和 MongoDB 驱动程序使用通用 JSON 对象
- docker - 从主机连接到 docker 服务名称
- nginx - 使用 Google Cloud Kubernetes TCP 负载均衡器的 Nginx 状态码 499
- java - 另一个父类在类加载器中导致异常
- assembly - armv8 中的 MOV 指令使用哪个处理器部分
- python-3.x - 将字符串列表转换为 numpy 数组的简单方法