Я использую методы синтаксического анализа XML из System.Xml.Linq
. Я уже давно игнорирую эту проблему, но наконец решил, что должен спросить, почему это так.
Если вы попытаетесь поместить открытую угловую скобку <
в строковый атрибут, синтаксический анализатор сгенерирует исключение, потому что он думает, что открывает новый тег. Например:
<Foo text="This is my <sample> text" />
Почему он не может справиться с этим? Любой, кто знает что-то о парсерах, знает, что это не должно быть проблемой. Парсер должен понимать, что он находится в середине открытой строки, и может рассматривать этот символ как не специальный. Вместо этого я должен избежать их как <
везде.
Единственный ответ, который я могу придумать, это то, что это сознательный выбор. Дизайнеры решили, что в этой ситуации более вероятно, что кто-то забыл закрыть строку, а не то, что им нужен этот символ в строке. Верна ли эта гипотеза или за этим стоит реальная техническая причина, и я тот, кто не понимает парсеры? И что я могу сделать, чтобы не убежать от этих персонажей?