c# - 读取 XML 时忽略空格

标签 c# .net xml xml-parsing

我有以下格式的 XML 格式

<Tag>
    Value
</Tag>

这来 self 无法更改的外部数据源。 使用 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

White space that is not considered to be significant includes spaces, tabs, and blank lines used to set apart the markup for greater readability. An example of this is white space in element content.

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

简单的回答

你可以直接调用 Trim:

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

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

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

关于c# - 读取 XML 时忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376414/

相关文章:

c# - 您可以使用 ManagementEventWatcher 类查询什么

xml - xsl : transforming a list into a 2-D table

使用异常处理通过 Minidom 进行 Python XML 解析

android - 在布局 xml 文件 android 中找不到资源错误

c# - 为什么++i 和 i++ 都会生成临时文件

c# - 我的按钮需要点击两次而不是一次

c# - 在 .NET 中将数组转换为 HashSet<T>

c# - WPF 中的便笺项目。模型、 View 、 View 模型

c# - 当另一个完成使用多线程时启动一个方法

c# - Linq 到 SQL : how to handle database changes