Несколько других запросов XPath:
<!-- based on this XML -->
<Vocabulary>
<Word type="adj" level="1">
<English Text="big" /><!-- let's change this to "large" -->
<Spanish Text="grande" />
</Word>
</Vocabulary>
1.Выберите все атрибуты с именем Text
Set xmlNodes = xmlDoc.selectNodes("//@Text")
For Each xmlNode in xmlNodes
If xmlNode.Text = "big" Then
xmlNode.Text = "large"
bNodeModified = true
End If
Next
2.Выберите узлы, которые содержат атрибут Text
Set xmlNodes = xmlDoc.selectNodes("(MySelections/MySelection[@Text])")
For Each xmlNode in xmlNodes
If xmlNode.getAttribute("Text") = "big" Then
xmlNode.setAttribute "Text", "large"
End If
Next
3.Выберите узлы, которые содержат атрибут Text
И значение big
Set xmlNodes = xmlDoc.selectNodes("(MySelections/MySelection[@Text='big'])")
For Each xmlNode in xmlNodes
xmlNode.setAttribute "Text", "large"
Next
Вся программа:
Dim xmlDoc, xmlNodes, xmlNode, bNodeModified
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = false
xmlDoc.Load "C:\MyFile.xml"
Set xmlNodes = xmlDoc.selectNodes("//@Text")
bNodeModified = false
For Each xmlNode in xmlNodes
If xmlNode.Text = "big" Then
xmlNode.Text = "large"
bNodeModified = true
End If
Next
If bNodeModified Then
xmlDoc.Save strXmlFile
End If