2011-03-23 58 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 - >!@#$%^ & *()