How do I check if a node has particular attribute or not.
What I did is:
string referenceFileName = xmlFileName;
XmlTextReader textReader = new XmlTextReader(referenceFileName);
while (textReader.Read())
{
XmlNodeType nType = textReader.NodeType;
// if node type is an element
if (nType == XmlNodeType.Element)
{
if (textReader.Name.Equals("Control"))
{
if (textReader.AttributeCount >= 1)
{
String val = string.Empty;
val = textReader.GetAttribute("Visible");
if (!(val == null || val.Equals(string.Empty)))
{
}
}
}
}
Is there any function to check that a given attribute is present or not?
No, I don't think there is any method in XmlTextReader class which can tell you whether a particular attribute exists or not.
You can do one thing to check
if(null == textReader.GetAttribute("Visible"))
{
//this means attribute doesn't exist
}
because MSDN says about GetAttribute
method
Return the value of the specified attribute. If the attribute is not found,
a null reference (Nothing in Visual Basic) is returned.
Found this: http://csharpmentor.blogspot.co.uk/2009/05/safely-retrive-attribute-from-xml-node.html
You can convert the XmlNode to an XmlElement then use the HasAttribute method to check. I just tried it and it works - very useful.
Sorry its not an example using your code - I'm in a hurry but hope it helps future askers!
Try out LINQ-To-XML (query below might require minor fixes since I'm not have XML you are using)
XDocument xdoc = XDocument.Load("Testxml.xml");
// It might be that Control element is a bit deeper in XML document
// hierarchy so if you was not able get it work please provide XML you are using
string value = xdoc.Descendants("Control")
.Where(d => d.HasAttributes
&& d.Attribute("Visible") != null
&& !String.IsNullOrEmpty(d.Attribute("Visible").Value))
.Select(d => d.Attribute("Visible").Value)
.Single();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With