XDocument.Parse保留不需要的空格

时间:2014-02-18 22:30:06

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

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"

如果我是否将缩进或不缩进的XML赋予空格,XDocument.Parse如何始终忽略空格?

1 个答案:

答案 0 :(得分:1)

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

<root>
  <foo>foo 1</foo>
  <foo>foo 2</foo>
</root>
如果忽略空格,则可以将

解析为具有两个root子元素节点的foo元素节点,或者解析为具有五个子节点的root元素节点:text node,{{ 1}}元素节点,文本节点,foo元素节点,文本节点),但如果元素包含一些包含空格的文本数据,那么它被认为是重要的。因此,您唯一的选择是在.NET框架中使用类似foo的方法,或者在XPath中使用Trim,以便在处理元素时删除空白区域。