HI,
I am using VB.NET to read an XHTML file. I need my program to find every element within the XML structure which has the "class" attribute set to a specific value.
IE: I need an array (or similar list) of all elements from the document which contain class="mytag".
There is a list of several values I need to detect, all of which start with the same word 'mytag' followed by another word - so using a "contains" function seems sensible here.
Any suggestions of ways I can parse out these attributes would be appreciated.
Cheers.
Use the following XPath expression with the SelectNodes
function of an XmlDocument
object:
//*[@class="mytag"]
This expression will select any XHTML element whose class
attribute's value is equal to "mytag"
.
If you want to find all elements whose class
attribute contains a particular string, the XPath function contains
will help you:
//*[contains(@class,"mytag")]
The SelectNodes
function returns a list of XML nodes from the XmlDocument
corresponding on the XPath expression passed to it as a parameter. Based on your description, it's exactly what you need.
If you are OK with LINQ try XML literals,
Like this:
Dim nodes = From currentNode In XmlDoc...<your-node-name>
For Each node As XElement In nodes
Console.Writeline(node.Attribute("attr-name").Value())
Next