【问题标题】:XDocument.Parse preserving unwanted whitespaceXDocument.Parse 保留不需要的空格
【发布时间】:2014-02-18 22:30:05
【问题描述】:

XDocument.Parse 在解析我的 XML 时保留了不需要的空白。我的 XML 似乎“未缩进”,这意味着无论我是否发送 LoadOptions.PreserveWhitespace 标志 (http://msdn.microsoft.com/en-us/library/bb551294(v=vs.110).aspx),都会保留空格。

这意味着当我有如下 XML 时:

<?xml version="1.0" encoding="UTF-8"?>
<blah:Root xmlns:blah="example.blah.com">
  <blah:Element>
    value
  </blah:Element>
</blah:Root>

然后看看

XDocument xDoc = XDocument.Parse(blahXml);
xElement xEl = xDoc.Root.Element("Element");
string value = xEl.Value;
print value;

它将打印"\n value\n" 而不是"value"

如何让XDocument.Parse 始终忽略空格,无论我是否给它缩进或不缩进的 XML?

【问题讨论】:

  • 你为什么不简单地使用xEl.Value.Trim()
  • 我能做到。我希望有一些内置的东西,所以我每次尝试获取值时都不必执行 .Trim() 。

标签: c# xml linq-to-xml whitespace


【解决方案1】:

元素之间的空白可以忽略(例如

<root>
  <foo>foo 1</foo>
  <foo>foo 2</foo>
</root>

如果空格被忽略,则可以解析为带有两个foo子元素节点的root元素节点,或者可以解析为带有五个子节点的root元素节点:文本节点、foo元素节点、文本节点, foo 元素节点,文本节点),但如果一个元素包含一些包含空格的文本数据,那么它被认为是重要的。因此,您唯一的选择确实是使用 .NET 框架中的 Trim 或 XPath 中的 normalize-space 之类的方法,以便在处理元素时删除空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2015-04-27
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多