XMLエンティティを確保するために、どのように有効な名前を持っています

StackOverflow https://stackoverflow.com/questions/4617212

  •  26-09-2019
  •  | 
  •  

質問

私は私がコントロールしていないことをソースからいくつかのデータのオフに基づいて、XMLの束を生成アプリを持っています。基本的に私はRSSフィードを経由して提供するためのXMLドキュメントにそのデータを回しています。私はのようなデータを取得することができる。

2_br=1
3_br=0

と私は、次のXML

にそれを回しますよ
<2_br>1</2_br>
<3_br>0</3_br>

もちろんXMLタグは数字で始めることはできません。私はどこにも有効な文字のリストを見つけることができませんでした。それはどこかに存在していますか?私は基本的には、プレフィックスと、無効な開始文字に行くか_でインライン無効な文字を置き換えています。

これが行うのは難しいことではありませんが、基本的に私はちょうどXMLタグ名に無効な文字のリストを見つけるカントます。

役に立ちましたか?

解決

これはどう:拡張マークアップ言語(XML)1.0(第5版)

NameStartChar :: = ":" | [A-Z] | "_" | [-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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top