替换XML中的部分InnerText

替换XML中的部分InnerText,xml,vb.net,Xml,Vb.net,我正在用visual studio 2010用VB编写一个程序。我正在尝试替换xml中的文本,但我不确定如何才能做到这一点 我的xml文件如下所示。存在同名但级别不同的标记 <root> //1st example <tagA> //outer <nameA>something</nameA> <tagA> <flagA>%replace001%</

我正在用visual studio 2010用VB编写一个程序。我正在尝试替换xml中的文本,但我不确定如何才能做到这一点

我的xml文件如下所示。存在同名但级别不同的标记

<root>
    //1st example
    <tagA> //outer
        <nameA>something</nameA>
        <tagA>
           <flagA>%replace001%</flagA>
           <flagB>Keep this</flagB>
        </tagA> //inner
    </tagA>
    <tagB>
        some other stuff
    </tagB>
    //2nd example
    <tagA>
        %raplace002%
    </tagA>
</root>
但这在第一个示例中导致了一个问题,即它获取了部分的外部而不是内部,这使得
替换
不完全是我想要的

有人能帮我吗?我基本上只想替换最内部的inntertext

注意:我使用的是
XmlDocument
,请不要提供诸如将整个xml转换为字符串和执行simple String.Replace之类的答案

谢谢大家!

编辑:

对不起,我说得不够清楚

tagA
中有更多的子项,
tagA
可能是另一个
tagA
的子项


我正在寻找更多最内部的
tagA
,但这并不总是意味着它没有子项。

要仅获取最内部的
,可以使用
SelectNodes()
方法将以下XPath作为参数传递:

//tagA[not(.//tagA)]
上面的XPath表示选择文档中任何位置的所有
元素,该元素没有任何其他
子元素。将每个循环的内部循环更改为如下所示:

For Each node in xmlDoc.SelectNodes("//tagA[not(.//tagA)]")
    node.InnerText = node.InnerText.Replace(str, "success")
Next

对不起,我说得不够清楚,请看我的编辑。
For Each node in xmlDoc.SelectNodes("//tagA[not(.//tagA)]")
    node.InnerText = node.InnerText.Replace(str, "success")
Next