2

我有以下格式的 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; 
          }
     }
}

我怎样才能避免这种情况?

4

1 回答 1

3

不工作的答案

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

你试过设置XmlReaderSettings.IgnoreWhitespace吗?

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

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

简单的答案

你可以打电话Trim

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

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

(正如我在评论中提到的,我个人更喜欢使用 LINQ to XML,XmlReader除非你真的在阅读太大而无法放入内存的内容,但这是另一回事。)

于 2013-05-04T16:26:03.057 回答