Быстрее ли одна или другая из следующих структур, когда дело доходит до поиска определенного "ресурса" в приведенном ниже XML-файле?
Образец 1.
<root>
<resource key="res_test_1" value="test"/>
<resource key="res_test_2" value="test 2"/>
<resource key="res_test_3" value="test 3"/>
</root>
Образец 2.
<root>
<res_test_1>test</res_test_1>
<res_test_2>test 2</res_test_2>
<res_test_3>test 3</res_test_3>
</root>
«Ключи» - это всегда допустимые имена элементов XML.
Я спрашиваю, поскольку этот набор ключей / значений ресурса будет частью XML-файла, который будет обрабатываться XSL, заменяя определенные «ключи» в XML значениями из ресурсной части того же XML-файла. ... и я хотел бы структурировать ресурсную часть как можно более оптимально для поиска, который будет необходим.
Я использую C # и объект XslCompiledTransform для запуска преобразования.
Мой чистый инстинкт говорит, что объектная модель может быстрее получить ключи, когда они являются реальными именами элементов, но я не нахожу никаких советов относительно такого рода вопроса. Возможно, не имеет значения думать об этой проблеме, так как весь документ XML будет в памяти во время преобразования.
Редактировать (добавив больше информации отсюда и вниз):
Как я уже указывал, этот вопрос может быть теоретическим (фокусирование на нескольких миллисекундах не имеет значения), но причина ввода этого вопроса состояла в том, чтобы получить мнение именно о том, что я спрашиваю - один способ быстрее, чем другой (из двух приведенных примеров), когда речь идет о размещении данных в структуре XML. Является ли один или другой предпочтительным способом, по любой причине.
На мой взгляд, в первом примере требуется больше «работы» для процессора, для поиска и возврата значения при его запросе.
Это образец XPath для Образца 1:
/ Корень / ресурс [@ ключ = "res_test_2"] / @ значение
Соответствующий XPath для образца 2:
/ Корень / res_test_2
Кроме того, структура образца 2 требует меньше места, что улучшит время загрузки, как указано одним из ответов ниже. Хороший вопрос, по крайней мере, для очень больших документов.
Когда я подумаю об этом: очевидный недостаток примера 2 состоит в том, что схема XSD не будет иметь особого смысла, поскольку эта часть XML будет иметь динамические имена элементов ... что может быть тем, что советуют положить все значения в атрибуты (см. ответ ниже) было около.
Я сделал эти образцы XPath, поскольку их легко продемонстрировать. Аналогичный поиск потребуется в XSL-преобразовании, о котором я писал ранее, но в центре внимания этого вопроса должна быть структура документа, как более общий вопрос.
Спасибо,
Andreas