在Removechildnode之后删除由CreateTextNode添加的空白

时间:2013-11-21 12:03:44

标签: c# xml c#-4.0 c#-2.0

我正在使用(我们正在使用.Net 2.0)将一些X元素添加到Root元素

xnode.AppendChild(parentINode);
xnode.AppendChild(config.CreateTextNode("\r\n"));
//then removeing all added elements using 
xnode.ParentNode.RemoveChild(xnode);

这将添加一个空格,我想删除通过添加元素添加的空格,同时删除子节点。

我的原始文件如下所示:

  <c123:Images State="ARASU">
  <!-- Names-Images -->
 </c123:Images>

我们将添加一些元素:

    <c123:Images State="ARASU">
     <!-- Names-Images -->
     <Name place=123>
     <Name place=1234>
     </c123:Images>

然后我们将删除元素:然后它看起来如下

   <c123:Images State="ARASU">
   <!-- Names-Images -->


    </c123:Images>

这里我们得到的空格数等于添加的元素数,我们要删除/避免删除子节点后创建的空格。 谢谢&amp;问候,
Channabasappa M

2 个答案:

答案 0 :(得分:0)

您可以使用此扩展方法:

    public static void RemoveEmptyElementsAndWhiteSpaces(this XDocument document)
    {
        if(null == document)
            throw new ArgumentNullException("document");

        document.Descendants()
            .Where(e => e.IsEmpty || string.IsNullOrWhiteSpace(e.Value))
            .Remove();
    }

编辑:如果您使用的是XmlDocument类,也许可以将PreserveWhiteSpace属性设置为false?

答案 1 :(得分:0)

我只是遍历XML标记然后通过检查

删除了空格
    //Removing whitespace created 

   if (xnode.NextSibling != null && xnode.NextSibling.NodeType == XmlNodeType.Whitespace)
      {
            xnode.ParentNode.RemoveChild(xnode.NextSibling);
      }