替换XML中的部分InnerText
我正在用visual studio 2010用VB编写一个程序。我正在尝试替换xml中的文本,但我不确定如何才能做到这一点 我的xml文件如下所示。存在同名但级别不同的标记替换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%</
<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