Мне нужно ежедневно обрабатывать документы 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>
... где мне нужны идентификатор объекта, интервал и URL.
Мои идеи для подходов:
1.) Наличие отдельной функции для анализа каждого XML-документа и итеративного создания SQL-запроса из этой функции
2.) Имея отдельную функцию, анализирую каждый документ и итеративно добавляю каждый объект в мой собственный класс объектов, и выполняю работу SQL с помощью метода класса
3.) Использование XSLT для преобразования всех документов в общий формат XML, а затем написание анализатора для этого документа.
Сами XML-документы не так уж и велики, так как большинство из них будут меньше 1 МБ. Я не ожидаю, что их структура будет часто меняться (если вообще когда-либо), но есть большая вероятность, что мне понадобится добавить и удалить дополнительные источники со временем. Я открыт для всех идей.
Кроме того, извините, если приведенные выше примеры XML искажены ... они не очень важны, просто грубая идея показать, что имена узлов в каждом документе разные.