在C#中,如何获取白色空间的XML节点值?
我有一个XML节点,其值为空白区域。 例:
我正在使用Serializer从XML文档中获取数据以将其存储在对象中。 现在,我面临的问题是:如果XML节点值只包含空格,就像上面的示例节点一样,序列化程序将其解释为string.Empty。
我怎么能克服这个? 我需要获得实际的空白区域,即“”。 谢谢你!
假设您使用的是XmlDocument,则应将PreserveWhiteSpace属性设置为True。
如果使用和XmlReader设置WhitespaceHandling属性WhitespaceHandling.All。
请参阅此 MSDN有关在序列化时保留空白区域的文章。
不同的序列化程序处理这种不同的方式,尝试使用XmlTextReader ,根据这篇论坛post。
样本类:
using System; namespace GeneralTesting { [Serializable] public class SampleNode { public string sampleNode = " "; } }
和示例程序:
XmlSerializer xmls = new XmlSerializer(typeof(SampleNode)); SampleNode sn = new SampleNode(); using (FileStream fs = File.Open(@"C:\test.xml", FileMode.Create)) { xmls.Serialize(fs, sn); } using (FileStream fs = File.OpenRead(@"C:\test.xml")) { XmlReaderSettings xmlrs = new XmlReaderSettings(); xmlrs.IgnoreWhitespace = false; using (XmlReader xmlr = XmlReader.Create(fs, xmlrs)) { Console.WriteLine("!{0}!", ((SampleNode) xmls.Deserialize(xmlr)).sampleNode); //output: ! ! } }
您可以使用CDATA占位符以避免删除空格: