在读取XML时忽略空格

时间:2013-05-04 16:23:31

标签: c# .net xml xml-parsing

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

<Tag>
    Value
</Tag>

这来自我无法改变的外部数据源。 使用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; 
          }
     }
}

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:3)

不能正常回答

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

您是否尝试过设置XmlReaderSettings.IgnoreWhitespace

  

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

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

简单回答

您可以致电Trim

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

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

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