我在寫一個XML解析器;我的應用程序創建XML文件。爲此,我必須處理特殊字符 - 例如我知道應將<
替換爲<
,同樣應將>
替換爲>
,依此類推。需要用這種方式處理的所有不同的角色是什麼?在創建XML時需要處理哪些特殊字符?
回答
看到這個維基百科文章: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
(除非你做它的學術目的,我建議你使用現有的.NET的XML解析庫,比如那些在System.Xml
命名空間,或System.Xml.Linq
如果。您嘗試序列化/反序列化對象,使用內置的Xml序列)
對於XML解析你不需要執行這些替代品 - 你需要執行他們的時候創建 XML。您也可以考慮在需要的地方替換&
和&
- 請參閱XML規範瞭解詳細信息。
但是,我會強烈建議你不要編寫自己的XML API。 .NET已經包含了其中的幾個,包括優秀的LINQ to XML。使用它而不是構建自己的。您獨立創建自己的XML API的機會非常低,您將花費大量的時間到達那裏。
使用體面的XML API,您不必擔心字符轉換等 - API將爲您處理它們。
有一個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 - >!@#$%^ & *()
有一種內置的.NET方法SecurityElement.Escape
用於轉義某些(不是全部)無效的XML字符。看看這個鏈接:
http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape%28v=VS.80%29.aspx
- 1. XML特殊字符處理
- 2. xelement如何處理特殊(xml)字符?
- 3. 在通過java編寫xml時處理特殊字符
- 4. 處理特殊字符?
- 5. 處理特殊字符
- 6. 處理特殊字符
- 7. 如何在處理Serialize/Deserialize xml對象時處理等特殊字符?
- 8. iOS地址簿導入API:iCloud條目需要進行哪些特殊處理?
- 9. @ + id /允許哪些特殊字符?
- 10. 處理特殊字符在NSURL
- 11. 在javascript中處理特殊字符
- 12. XML特殊字符
- 13. 處理需要被其他特殊字符替換的特殊字符的Java代碼
- 14. 處理RTF字段的特殊字符
- 15. 需要替換特殊字符
- 16. 特殊字符需要打開文件
- 17. 需要轉義字符串中的雙字符或某些特殊字符
- 18. 魔精:: DOM:做一些字符需要特殊的轉義?
- 19. XML中的特殊字符需要轉義?
- 20. 在PHP中創建XML使用SimpleXML有特殊字符
- 21. scrapy:有特殊字符處理的URL
- 22. SHA-512特殊字符處理
- 23. HTML VBS特殊字符處理
- 24. 處理mysql中的特殊字符
- 25. 處理特殊字符的SAX
- 26. 處理c中的特殊字符#
- 27. 用lucene處理特殊字符
- 28. 使用Java處理Excel特殊字符
- 29. 如何處理特殊字符
- 30. 處理Jstree中的特殊字符
只要你正在使用類似XmlDocument的或XmlWriter的對象,你不應該有任何問題,特殊字符所有的編碼格式爲你做。但是,如果您嘗試通過串聯字符串來創建XML,那麼您可能需要再次考慮一下您的方法。請記住,.Net框架有對象爲你做所有這些和更多。 – openshac 2011-03-23 08:11:10