Нечувствительная к регистру обработка имени файла в Подвижном

Насколько я понял, вы хотите отфильтровать ваш XML перед сериализацией.

Я предлагаю вам использовать LINQ для этого:

var filteredMaps = Maps.Where(map => !string.IsNullOrWhiteSpace(map.Item)).ToList();

Обратите внимание на вызов .ToList() в конце строки. Это важно, так как ваш XmlSerializer имеет тип List<Map>, я полагаю. Поместите эту строку перед сериализацией объекта, и результат должен выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Map item="something" uri="foo" />
</ArrayOfMap>

Не забывайте using System.Linq;

5
задан Mentat 26 October 2008 в 20:59
поделиться

2 ответа

Этот вопрос был решен в Подвижных 1.1! Из информации о версии: "Улучшенная правильность перед лицом casefolding файловых систем".

В Windows, Подвижном теперь, игнорирует регистр в его параметрах командной строки:

>hg status -A foo
C foo
>hg status -A FOO
C foo

И это также знает, что изменения имени файла, которые только включают случай, не являются новыми файлами:

>ren foo FOO
>hg status -A fOO
C foo

Таким образом больше нет никакого риска пропуска изменений из-за опечаток на командной строке.

Однако знайте, что содержание .hgignore файла остается чувствительным к регистру. Это - проблема, только если Вы используете синтаксис шарика; с regexp синтаксисом можно ли поместить (? i) в начале шаблонов для создания их нечувствительными.

10
ответ дан 18 December 2019 в 09:54
поделиться

Я думаю, что Вы неправильно читаете hgbook. Введение для разделения 7.7 просто описывает три различных типов чувствительности к регистру, которые существуют в OSs, не говоря, что подвижный зеркально отразит их семантика.

Позже в разделе 7.7.2 'Случаев обнаружения конфликтуют', он говорит:

При работе в рабочем каталоге, Подвижные почести политика именования файловой системы, где рабочий каталог расположен. Если файловая система является сохранением случая, но нечувствительный, Подвижный будет рассматривать имена, которые отличаются только в случае, если как то же.

Когда Вы делаете hg status -A FOO процесс это происходит в подвижном:

  1. Проверьте, существует ли файл в файловой системе, соответствующей аргументу файла, 'НЕЧТО', - и в этой точке это нечувствительно к регистру, таким образом, это находит 'нечто' и говорит "да, у меня есть файл"
  2. Проверьте, существует ли запись в декларации файла соответствие аргументу файла, 'НЕЧТО', и нет, таким образом, состояние показывает a'?' высказывание, это - файл на диске, который не отслеживает hg

Для лучше наблюдения подвижный не забота о случае на NTFS пробуют эти шаги:

  1. hg init
  2. строка эха> Foo
  3. hg добавляют Foo
  4. hg фиксируют-m, 'фиксировал Foo'
  5. переместите не-нечто Foo
  6. переместите НЕЧТО не-нечто
  7. состояние hg

и необходимо видеть, что hg говорит, что ничто не изменилось, потому что единственная вещь, которая изменилась, имеет место, который hg игнорирует для Вас.

Когда я делаю то же самое на Linux, я вместо этого вижу:

! Foo
? FOO
7
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: