Вот пример входных данных с количеством символов, начинающихся с префикса '.' быть близким к реальному сценарию, а также по количеству символов, добавленных к «.» Длина ввода будет около 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 # обладает эффективностью, о которой я не знаю, а это означает, что использование первого варианта имеет больше смысла. Я не уверен, но я не буду кодировать это до завтра, поэтому любые мнения очень ценятся.
С уважением,
Томас