Whenever I have a call to work with XPath , I am reminded how much I despise it. Like most other scripting languages, it has poor tools and is a drain on productivity. Yet there are a few things that can only be done well using it. So I soldier on bravely. Or something like that. There are a handful of resources I go back to when I am confronted with building an XPath query. This one from W3Schools is a good starter. The Wikipedia article is worth a look. And of course, since I'm a Microsoft platform guy, we mustn't forget the MSDN article . One thing worthy of note: in coding your node selection, be sure to use an XmlNamespaceManager if a namespace is set inside your document. For example: Dim doc As New XmlDocument doc.Load(xmlFileName) Dim namespaceManager As New XmlNamespaceManager(doc.NameTable) namespaceManager.AddNamespace("a", "urn:mynamespace.com/myobject/200x") node = doc.SelectSingleNode( String.Format("/a:mytag/a:mychildtag[@name='{0}']", tagName), namespaceManager) You don't need to define an abbreviation (here, "a") inside your document; you can apply an abbreviation to the namespace with the manager object. Using a namespace manager will prevent a lot of frustration in trying to test your query.