我有一种XML格式,格式如下
<Tag>
Value
</Tag>
这来自我无法改变的外部数据源。
使用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;
}
}
}
我该如何避免这种情况?
答案 0 :(得分:3)
不能正常回答
这个答案似乎不起作用,但我暂时离开它以避免其他人提出建议。如果有人发布了更好的答案,我会删除它。
您是否尝试过设置XmlReaderSettings.IgnoreWhitespace
?
不被视为重要的空格包括空格,制表符和空行,用于分隔标记以提高可读性。一个例子是元素内容中的空格。
由于某些原因, 不会影响文本节点的ReadElementContentAsString
甚至Value
属性。
简单回答
您可以致电Trim
:
string value = reader.ReadElementContentAsString().Trim();
这不会删除内容行之间的换行符当然......如果你需要这样做,你可以随时使用string.Replace
。
(正如我在评论中所提到的,我个人更喜欢使用LINQ to XML而不是XmlReader
,除非你真的读了太大而不适合记忆的内容,但那是另外一件事。)