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

Posted

技术标签:

【中文标题】在 Removechildnode 之后删除 CreateTextNode 添加的空白【英文标题】:Removing white space added by CreateTextNode after Removechildnode 【发布时间】: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

【问题讨论】:

【参考方案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);
      

【讨论】:

以上是关于在 Removechildnode 之后删除 CreateTextNode 添加的空白的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code [eslint] 在 Windows 上删除 'CR' [prettier/prettier]

错误删除“CR”更漂亮/更漂亮的 Visual Studio 代码

仅为 TS/TSX 文件删除 CR - VSCode 1.46 上的 Prettier ESLint

Oracle12.2 RAC集群管理之增加删除节点_Oracle12cR2视频教程(项目实战之六)

Oracle12c创建及删除PDB

使用GCC的4位PowerPC CR0寄存器