Какой более эффективный способ сопоставления одного XML-файла другому? Два варианта - PullRequest
0 голосов
/ 17 марта 2011

Вот пример входных данных с количеством символов, начинающихся с префикса '.' быть близким к реальному сценарию, а также по количеству символов, добавленных к «.» Длина ввода будет около 30 узлов XML.

<Example1.Identifier1>29</Example1.Identifier1>
<Example1.Identifier2>blah</Example1.Identifier2>
<Example2.Identifier1>blah2</Example2.Identifier1>
<Example2.Identifier2>23</Example2.Identifier2>

Вот пример файла, которому нужно сопоставить.

<Entity1>
    <Column1></Column1>
    <Column2></Column2>
</Entity1>
<Entity2>
    <Column1></Column1>
    <Column2></Column2>
</Entity2>

Вот первый способ составить карту. Это просто и не требует разбора имени узла.

<Example1.Identifier1 EntityName="Entity1" ColumnName="Column1"/>
<Example1.Identifier2 EntityName="Entity1" ColumnName="Column2"/>
<Example1.Identifier1 EntityName="Entity2" ColumnName="Column1"/>
<Example1.Identifier2 EntityName="Entity2" ColumnName="Column2"/>

Вот второй способ, он берет бит с префиксом '.' Это займет некоторое время, но, с другой стороны, вы будете искать в меньшем количестве узлов, поскольку сможете быстрее их сузить.

<Example1>
    <Identifier1 ColumnName="Column1/>
    <Identifier1 ColumnName="Column2/>
</Example1>
<Example2>
    <Identifier1 ColumnName="Column1/>
    <Identifier1 ColumnName="Column2/>
</Example2>

Мне кажется, второй вариант быстрее, примерно за 6 символов до. и вам придется искать через половину количества узлов, верно? В конечном итоге это будет словарь словарей в C #. Но, возможно, словарь C # обладает эффективностью, о которой я не знаю, а это означает, что использование первого варианта имеет больше смысла. Я не уверен, но я не буду кодировать это до завтра, поэтому любые мнения очень ценятся.

С уважением, Томас

...