2012-05-10 136 views
2

例如。 這些XML標籤是否可以接受。xml標籤可以包含整數值還是可以包含特殊字符?

<xml> 
<3333>abc</3333> 
<ab#$3>def</ab#$3> 
</xml> 

我的問題是,我可以創建整數值或特殊字符標記的標籤?

我想這

FileStream fs = new FileStream((filename), FileMode.Append); 
XmlWriter w = XmlWriter.Create(fs); 
w.WriteStartElement("3454"); 

,並得到了以下錯誤 {System.ArgumentException: Invalid name character in '3454'. The '3' character, hexadecimal value 0x33, cannot be included in a name. at System.Xml.XmlWellFormedWriter.CheckNCName(String ncname) at System.Xml.XmlWellFormedWriter.WriteStartElement(String prefix, String localName, String ns) at System.Xml.XmlWriter.WriteStartElement(String localName) at WindowsFormsApplication1.Form1.fn_setMapping(SqlString keyString, SqlString column, SqlString value)

謝謝

+0

我覺得隱藏在這個問題背後的一些可怕的設計。 – Filburt

+0

Filburt我是新來的XML。不知道xml的規則。這個問題背後的原因:) –

+0

如果您打算通過添加數字將邏輯放入Xml節點名稱中,那麼您做錯了,並且稍後在處理Xml數據時會遇到很多麻煩。使用屬性來代替:不要這樣做:' Foo'寧可這樣做:' Foo' – Filburt

回答

5

XML元素名稱不能以數字開頭,所以<3333>無效。

至於哪些特殊字符是有效的......見spec for element names

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] 
NameChar  ::=  NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] 
Name  ::=  NameStartChar (NameChar)* 

有效的名稱應與NameStartChar後跟任意數量的NameChar開始。

+0

和特殊字符呢?並且如果你有 –

+0

@WaqarJanjua - 只要它們落在允許的範圍內,就可以共享xml規則的鏈接。查看更新的答案。 – Oded

+0

是否可以檢查字符串值是否是有效的xml標籤? –