Find following starter help:
typeArguments of the different fore each are set to XElement:
item = xDoc.Root.Descendants("node")
item.Attribute("id").Value
item2 = item.Elements("property")
"Name: " & item2.Attribute("name").Value
attrName = {"ref","value"}.Where(Function (x) item2.Attributes.Any(Function (a) a.Name.LocalName.Equals(x))).First()
attrName + ": " + item2.Attribute(attrName).Value
Log: