在读取XML时忽略空格
我有一种格式如下的XML格式
Value
这来自我无法改变的外部数据源。 使用XmlReader
,内容具有Linebreaks
和Whitepace
。
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
除非你真的读了太大而不适合内存的东西,但那是另外一回事。)