2014-02-18 82 views
2

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

这意味着,当我有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?

+0

你为什么不干脆用'xEl.Value.Trim()' –

+0

我能做到这一点。我希望有内置的东西,所以我不必做.Trim()每次我尝试获得一个值。 – user1803368

回答

1
元件之间

白空间可以被忽略(例如

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

可以如果空白将被忽略或与五个子节点root元素节点被解析成一个root元素节点具有两个foo子元素节点:文本节点,foo元素节点,文本节点,foo元素节点,文本节点),但是如果元素包含一些包含空白的文本数据,则认为它很重要。因此,您唯一的选择是在.NET框架中使用像Trim这样的方法,或者在XPath中使用normalize-space这样的方法,以在处理元素时删除空白区域。