在读取XML时忽略空格

我有一种格式如下的XML格式

 Value  

这来自我无法改变的外部数据源。 使用XmlReader ,内容具有LinebreaksWhitepace

 XmlReaderSettings xmlSettings = new XmlReaderSettings(); xmlSettings.Schemas = new System.Xml.Schema.XmlSchemaSet(); XmlReader schemaReader = XmlReader.Create(xsdStream); xmlSettings.Schemas.Add("", schemaReader); xmlSettings.ValidationType = ValidationType.Schema; reader = XmlReader.Create(xmlFilename, xmlSettings); // Parse the XML file. while (reader.Read()) { if (reader.IsStartElement()) { switch (reader.Name) { case "Tag": string value = reader.ReadElementContentAsString(); Console.WriteLine(value); break; } } } 

我怎么能避免这个?

不工作的答案

这个答案似乎不起作用,但我暂时离开它以避免其他人提出建议。 如果有人发布了更好的答案,我会删除它。

你尝试过设置XmlReaderSettings.IgnoreWhitespace吗?

不被视为重要的空格包括空格,制表符和用于分隔标记以获得更高可读性的空行。 一个例子是元素内容中的空格。

由于某种原因,这不会影响ReadElementContentAsString甚至文本节点的Value属性。

简单的回答

你可以打电话给Trim

 string value = reader.ReadElementContentAsString().Trim(); 

这不会消除内容行之间的换行符,当然……如果你需要这样做,你总是可以使用string.Replace

(正如我在评论中提到的,我个人更喜欢使用LINQ to XML而不是XmlReader除非你真的读了太大而不适合内存的东西,但那是另外一回事。)