在 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