2014-02-18 4 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

Я мог бы это сделать. Я надеялся, что есть что-то построенное, поэтому мне не нужно было делать. Трим() каждый раз, когда я пытаюсь получить ценность. – user1803368

ответ

1

Пустое пространство между элементами можно пренебречь (например,

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

может быть проанализирован в root узлов элементов с двумя foo дочерних элементов узла, если белое пространство игнорируется, или в узел root элемента с пятью дочерними узлами: текстовый узел, foo узел элемента, текстовый узел, foo узел элемента, текстовый узел), но если элемент содержит некоторые текстовые данные, которые содержат пробел, то это считается важным. Таким образом, ваш единственный вариант - действительно использовать такой метод, как Trim в платформе .NET, или как normalize-space в XPath, чтобы удалить пробел при обработке элемента.

Смежные вопросы