代码之家  ›  专栏  ›  技术社区  ›  Ravisha

只清除内部文本而不清除子节点

  •  0
  • Ravisha  · 技术社区  · 15 年前

    我有一个XML,如下所示

    < Image>ImageValue1
      <Type>png</Type>
      <Value>ImageValue1</ Value>
    </ Image>
    

    这里ImageValue1存在于两个位置。我要删除父级的Image节点的InnerText。为此,我使用以下代码

    XmlNode customImageNode = imagedoc.SelectSingleNode("//Image");
    customImageNode.InnerText = string.empty;
    

    但这也将清除子节点。请让我知道如何清除此测试。正在寻找通用解决方案。

    2 回复  |  直到 8 年前
        1
  •  3
  •   Dan Tao    15 年前

    我相信你需要做的就是选择 文本 节点 Image 节点。你这样做:

    XmlNode customImageNodeTextNode = imageDoc.SelectSingleNode("//Image/text()");
    customImageNodeTextNode.InnerText = string.Empty;
    

    我刚刚测试了上面的代码,它对我有效。祝你好运!

        2
  •  1
  •   RA.    15 年前

    尝试做: customImageNode.Value= string.empty;

    更新: 抱歉弄错了。应该是这样的: customImageNode.RemoveChild(customImageNode.FirstChild); ,因为在本例中,节点的内部文本是它的第一个子节点。我已经检查过了,它可以用了。