Как убедиться, что сущность xml имеет правильное имя - PullRequest
0 голосов
/ 06 января 2011

У меня есть приложение, которое генерирует кучу xml на основе некоторых данных из источника, который я не контролирую.По сути, я превращаю эти данные в документ XML для обслуживания через RSS-каналы.Возможно, я получаю данные типа

2_br=1
3_br=0

и превращаю их в следующий xml

<2_br>1</2_br>
<3_br>0</3_br>

Очевидно, тег xml не может начинаться с цифрыЯ нигде не мог найти список допустимых символов.Это где-то существует?Я просто собираюсь префикс и недопустимый начальный символ или заменить недопустимый встроенный символ на _.

Это не сложно, но в основном я просто не могу найти список недопустимых символов для имени тега xml.

Ответы [ 2 ]

4 голосов
/ 06 января 2011

Как насчет этого: Расширяемый язык разметки (XML) 1.0 (пятое издание)

NameStartChar :: = ":" |[AZ] |"_" |[az] |[# xC0- # xD6] |[# xD8- # xF6] |[# xF8- # x2FF] |[# x370- # x37D] |[# x37F- # x1FFF] |[# x200C- # x200D] |[# x2070- # x218F] |[# x2C00- # x2FEF] |[# x3001- # xD7FF] |[# xF900- # xFDCF] |[# xFDF0- # xFFFD] |[# X10000- # xEFFFF]

0 голосов
/ 10 ноября 2014
XmlConvert.IsNCNameChar() 

и

XmlConvert.IsStartNCNameChar()

могут использоваться для проверки имени XML-тега:

char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
  validTagName = "_" + validTagName;
...