2013-07-17 2 views

ответ

6

Использование LINQ к XML, как о чем-то вроде:

foreach (var element in doc.Descendants()) 
{ 
    foreach (var attribute in element.Attributes()) 
    { 
     attribute.Value = attribute.Value.Trim(); 
    } 
    foreach (var textNode in element.Nodes().OfType<XText>()) 
    { 
     textNode.Value = textNode.Value.Trim(); 
    }  
} 

Я думаю, который должен работать ... Я не считаю, что вам нужно использовать ToList, чтобы избежать проблем, когда вы повторяете, так как вы не меняете структуру документа XML, просто текст.

+1

Это не работает. Если у меня есть <Описание Model = "Ford"> Blue<Описание Model = "Chevy"> Красный он возвращает Blue Red user1152145

+0

@ user1152145: Хорошо, исправит. –

+0

@ user1152145: Попробуйте сейчас. В основном я сейчас обрабатываю текстовые узлы отдельно. –

0

Попробуйте это. Не забудьте перезаписать свои ChildNodes ...

protected void Page_Load(object sender, EventArgs e) 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(@"c:\temp\cars.xml"); 
    Recurse(doc.ChildNodes); 
} 
private void Recurse(XmlNodeList nodes) 
{ 
    foreach (XmlNode node in nodes) 
    { 
     if (node.InnerText != null) 
      node.InnerText = node.InnerText.Trim(); 

     if (node.Attributes != null) 
     { 
      foreach (XmlAttribute att in node.Attributes) 
       att.Value = att.Value.Trim(); 
     } 

     Recurse(node.ChildNodes); 
    } 
} 
Смежные вопросы