我在写一个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