2012-07-13 116 views
1

我有置换xml,它具有占位符及其值。我有XML字符串,我需要搜索占位符并将其替换为值。在xml中用值替换占位符的最佳方法

例如,

占位符XML

<PlaceHolders> 
    <PlaceHolder placeholder="PD1" value="value1" /> 
</PlaceHolders> 

XML

<customers> 
    <customer avatarURL="PD1"/> 
</customers> 

什么是取代 “PD1” 与价值 “VALUE1” 的最佳方式?

回答

0

以下是使用XPath执行此操作的一种方法。这将用正确的值代替一个占位符。您需要循环并为每个占位符执行一次。这将替换在XML的任何元素的任何属性中找到的占位符:

Dim doc As New XmlDocument() 
doc.LoadXml("...") 
For Each node As XmlNode In doc.SelectNodes("//@*[.='PD1']") 
    node.InnerText = "value1" 
Next 

但是,如果你还需要更换的元素的文本价值,以及(如<customer>PD1</customer>),那么你就需要更改XPath以查找属性或元素文本值:

Dim doc As New XmlDocument() 
doc.LoadXml("...") 
For Each node As XmlNode In doc.SelectNodes("//@*[.='PD1'] | //*[text()='PD1']") 
    node.InnerText = "value1" 
Next 
+0

谢谢。 node.InnerText将“PD1”更新为“value1”?是否更新属性值或将值设置为内部文本? – user1186065 2012-07-13 17:14:39

+0

在这种情况下,更新属性的值,因为'node'是属性节点,而不是元素节点。 – 2012-07-13 17:46:25

+0

这就是我想要的。谢谢。如果在xml元素中搜索字符串,例如 PD1,那么也会返回xml元素? – user1186065 2012-07-13 18:09:24