2012-09-18 27 views
1

我有以下XML文件。我如何从中删除不必要的空格?我尝试使用XDocument.Save和删除格式,但它没有奏效。试图解析文件时出现异常。基本上我想规范化文本,以便它不包含这些空格。我应该诉诸正则表达式吗?如何从XML文件中删除空格

<? x m l v e r s i o n =“1.0”e n c o d i n g =“u t f - 1 6”? >

< n s 0 : C D I S c h e m a E r r o r x m l n s : n s 0 = " h t t p :// M i c r o s o f t . I T . R e l a t i o n s h i p M a n a g e m e n t . S c h e m a s . P a r t n e r F u n d S u m m a r y S c h e m a E r r o r/V 1 " > 

    < E r r o r I n f o r m a t i o n > T h e r e w a s a f a i l u r e e x e c u t i n g t h e r e c e i v e p i p e l i n e : " s d f g t w . I T . R e l a t i o n s h i p M a n a g e m e n t . P i p e l i n e s . N o n C a s h P a y m e n t R e s p o n s e V 1 C S V T o X m l F i l e C o n v e r s i o n , t b f a e . I T . R e l a t i o n s h i p M a n a g e m e n t . P i p e l i n e s U R I : " D : \ t e s t u r l f o l d e r \ S u b S y s t e m \ S t a g i n g \ V I R P \ * . c s v " R e a s o n : T h e d o c u m e n t f a i l e d t o v a l i d a t e b e c a u s e o f t h e f o l l o w i n g e r r o r : " T h e ' R e f e r e n c e N u m b e r ' e l e m e n t h a s a n i n v a l i d v a l u e a c c o r d i n g t o i t s d a t a t y p e . " .  </E r r o r I n f o r m a t i o n > 
    < O r i g i n a l M e s s a g e > > Id,StatusCode,ReferenceNumber,DateTime,ErrorMessage 

41977,0,12344,2011-08-29T15:16:06.120,blackety嗒嗒 </O riginal中号essage> </NS 0:CDIS CHEMAéRROR>

回答

4

看起来您正在使用Utf8或ASCII编码读取UTF-16文档。正确打开流,你不应该看到奇怪的字符(应该是\0,不是空格)。

样品(由德米特罗Tsiniavsky):

XElement body; 
using(var sReader = new StreamReader(fileName,Encoding.Unicode)) 
{ 
    body = XDocument.Parse(sReader.ReadToEnd()); 
} 
+0

嗨阿列克谢,感谢您的答复。你是对的。然而,引发异常的行是这样的:XElement body = XElement.Load(fileName);如果我尝试使用像这样的StreamReader加载文件=> var sReader = new StreamReader(fileName,Encoding.Unicode),我可以正确查看内容。无论如何,在使用XElement时要指定这样的格式,以便我可以像XML文件一样对待它? – Cranialsurge

+0

可能您的流在开始时没有正确的BOM,因为结果XML读取器默认为UTF8。我没有看到任何指定读取器而不是仅仅文件名的特别错误...但是我不认为你可以通过编码来调用,只需要文件名。 –

+2

试试'XElement body;使用(var sReader = new StreamReader(fileName,Encoding.Unicode)){body = XDocument.Parse(sReader.ReadToEnd());}' – Dmytro