سؤال

لديّ تطبيق يولد مجموعة من XML استنادًا إلى بعض البيانات من مصدر لا أتحكم فيه. في الأساس أقوم بتحويل هذه البيانات إلى مستند XML للخدمة عبر خلاصات RSS. قد أحصل على بيانات مثل

2_br=1
3_br=0

وأنا أحوله إلى XML التالي

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

من الواضح أن علامة XML لا يمكن أن تبدأ برقم. لم أتمكن من العثور على قائمة بالأحرف الصحيحة في أي مكان. هل هو موجود في مكان ما؟ أنا في الأساس فقط ذاهب إلى البادئة وحرف بدء غير صالح أو استبدال حرف غير صالح مضمّن مع _.

ليس من الصعب القيام بذلك ، لكن في الأساس لا أستطيع العثور على قائمة بالأحرف غير الصالحة لاسم علامة XML.

هل كانت مفيدة؟

المحلول

وماذا عن هذا:لغة الترميز القابلة للتمديد (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

نصائح أخرى

XmlConvert.IsNCNameChar() 

و

XmlConvert.IsStartNCNameChar()

يمكن استخدامه للتحقق من اسم XML-TAG:

char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
  validTagName = "_" + validTagName;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top