XmlReader.HasValue Property
Summary
Gets a value indicating whether the current node has a value.
This property is `true` for attribute, CDATA, text, and element nodes.
Syntax
public abstract bool HasValue { get; }
Property Value
| Type | Description |
|---|---|
| System.Boolean | true if the node has a value; otherwise, false. |
Remarks
The `HasValue` property returns true for the following node types:
XmlNodeType.AttributeXmlNodeType.CDATAXmlNodeType.TextXmlNodeType.Element(when it has text content or attributes)
For other node types, such as XmlNodeType.Document, XmlNodeType.Element (without text content), or XmlNodeType.EndElement, this property returns false.
Important: This property should be checked after ensuring the reader is positioned on a node that can potentially have a value. Accessing it on an invalid node type might lead to unexpected behavior.
Examples
C# Example
using System;
using System.Xml;
public class XmlReaderExample
{
public static void Main()
{
string xml = @"<root><item id='1'>Hello</item></root>";
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
while (reader.Read())
{
Console.WriteLine($"Node Type: {reader.NodeType}, Name: {reader.Name}");
if (reader.HasValue)
{
Console.WriteLine($" Value: {reader.Value}");
}
}
}
}
}
Output:
Node Type: Element, Name: root
Node Type: Attribute, Name: id
Value: 1
Node Type: Text, Name: #text
Value: Hello
Node Type: EndElement, Name: item
Node Type: EndElement, Name: root
Requirements
| Interface | Implementation |
|---|---|
XmlReader.HasValue |
The `XmlReader` class implements this property. |
| .NET Framework | Supported in versions 1.0 and later. |
| .NET Core | Supported in .NET Core 1.0 and later. |