【问题标题】:Removing white space added by CreateTextNode after Removechildnode在 Removechildnode 之后删除 CreateTextNode 添加的空白
【发布时间】:2013-11-21 12:03:43
【问题描述】:

我正在使用(我们正在使用 .Net 2.0)向根元素添加一些 X 元素

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>

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

【问题讨论】:

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


    【解决方案1】:

    你可以使用这个扩展方法:

        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 ?

    【讨论】:

    • 谢谢,我们使用的是 .Net 2.0 我认为 System.Linq 不支持它。
    • 谢谢我尝试了reserveWhiteSpace=false,但没有成功。
    • schglurps:我已经用输出更新了我的问题,请告诉我你的建议。
    【解决方案2】:

    我只是遍历到 XML 标记,然后通过检查删除了空格

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

    【讨论】:

      猜你喜欢
      • 2012-09-25
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2022-10-31
      • 2017-12-27
      • 2013-07-01
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多