【发布时间】:2009-03-30 15:38:06
【问题描述】:
我需要每天将不同格式的 XML 文档处理成 MySQL 数据库中的记录。我需要的每个 XML 文档中的数据都散布着大量我不需要的数据,而且每个文档的节点名称都不同。例如:
来源#1:
<object id="1">
<title>URL 1</title>
<url>http://www.one.com</url>
<frequency interval="60" />
<uselessdata>blah</uselessdata>
</object>
<object id="2">
<title>URL 2</title>
<url>http://www.two.com</url>
<frequency interval="60" />
<uselessdata>blah</uselessdata>
</object>
来源#2:
<object">
<objectid>1</objectid>
<thetitle>URL 1</thetitle>
<link>http://www.one.com</link>
<frequency interval="60" />
<moreuselessdata>blah</moreuselessdata>
</object>
<object">
<objectid>2</objectid>
<thetitle>URL 2</thetitle>
<link>http://www.two.com</link>
<frequency interval="60" />
<moreuselessdata>blah</moreuselessdata>
</object>
...我需要对象的 ID、间隔和 URL。
我对方法的想法是:
1.) 有一个单独的函数来解析每个 XML 文档并从该函数中迭代地创建 SQL 查询
2.) 有一个单独的函数解析每个文档并迭代地将每个对象添加到我自己的对象类中,并通过类方法完成 SQL 工作
3.) 使用 XSLT 将所有文档转换为通用 XML 格式,然后为该文档编写解析器。
XML 文档本身并没有那么大,因为大多数都小于 1MB。我预计它们的结构不会经常变化(如果有的话),但随着时间的推移,我很有可能需要添加和删除更多来源。我对所有想法持开放态度。
另外,很抱歉,如果上面的 XML 示例被破坏了......它们并不是非常重要,只是一个粗略的想法,表明每个文档中的节点名称是不同的。
【问题讨论】: