如何保证XML实体有一个有效的名称
-
26-09-2019 - |
题
我有生成从源我不控制某些数据的基于一串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 强> :: = “:” | [A-Z] | “_” | [A-Z] | [#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标签名:
char[] validTagNameChars = pDesiredTagName.Where(ch => XmlConvert.IsNCNameChar(ch)).ToArray();
string validTagName = new string (validTagNameChars);
if (validTagName == "" || !XmlConvert.IsStartNCNameChar(validTagName[0]))
validTagName = "_" + validTagName;
不隶属于 StackOverflow