2011-03-23 32 views
0

我在寫一個XML解析器;我的應用程序創建XML文件。爲此,我必須處理特殊字符 - 例如我知道應將<替換爲&lt;,同樣應將>替換爲&gt;,依此類推。需要用這種方式處理的所有不同的角色是什麼?在創建XML時需要處理哪些特殊字符?

+0

只要你正在使用類似XmlDocument的或XmlWriter的對象,你不應該有任何問題,特殊字符所有的編碼格式爲你做。但是,如果您嘗試通過串聯字符串來創建XML,那麼您可能需要再次考慮一下您的方法。請記住,.Net框架有對象爲你做所有這些和更多。 – openshac 2011-03-23 08:11:10

回答

0

對於XML解析不需要執行這些替代品 - 你需要執行他們的時候創建 XML。您也可以考慮在需要的地方替換&&amp; - 請參閱XML規範瞭解詳細信息。

但是,我會強烈建議你不要編寫自己的XML API。 .NET已經包含了其中的幾個,包括優秀的LINQ to XML。使用它而不是構建自己的。您獨立創建自己的XML API的機會非常低,您將花費大量的時間到達那裏。

使用體面的XML API,您不必擔心字符轉換等 - API將爲您處理它們。

0

有一個list of XML escape codes listed here

使用System.XML.XMLConvert類來處理特殊字符爲您提供:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string s; 
     s = System.Xml.XmlConvert.EncodeName("valid XML --> [email protected]#$%^&*()"); 
     Console.WriteLine("Encoded: {0}", s); 
     Console.WriteLine("Decoded: {0}",System.Xml.XmlConvert.DecodeName(s)); 
     Console.ReadLine(); 
    } 
} 

會產生這樣的結果:

編碼: valid_x0020_XML_x0020 _ - _ x003E__x0020__x0021__x0040__x0023__x0024__x002 5__x005E__x0026__x002A__x0028__x0029_

解碼:有效的XML - >!@#$%^ & *()