LinqToXml, спец. символы в имени тегов
От: SHEMA  
Дата: 23.11.09 19:36
Оценка:
Есть такой код:

var doc = new XDocument(
    new XElement("root",
            new XElement(xname, xvalue)
    ));


, где xname и xvalue произвольные значения и могут содержать всякие бяки.

Так вот, если xvalue содержит спец. xml символы ('<', '>', '\"', '\'', '&'), они благополучно эскейпятся и проблем не возникает.

А вот с xname такое не проходит.

Google подсказал замечательный класс SecurityElement с методом Escape, но он не подходит.

Во-первых, имя тега не может содержать спец. символов даже в заескейпаном виде (пример ексепшена: The '&' character, hexadecimal value 0x26, cannot be included in a name.).

А во-вторых на него распространяются и другие ограничения, например: Name cannot begin with the '.' character, hexadecimal value 0x2E (имя не может начинаться с '.' символа).

Вопрос: как кошерно заескейпить или хотя бы проверить на валидность имя тега (SecurityElement.IsValidTag(xname) возвращает true для xname с '.' вначале) + ткните пжалста где эти правила популярно расписаны — в крайнем случае придется ручками вызывать string.replace...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.