+2008-01-26 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XNodeReader.cs : fixed GetAttribute() that wrongly resulted in
+ returning "" instead of null. Fixed bug #335975.
+
2007-11-27 Atsushi Enomoto <atsushi@ximian.com>
* XStreamingElement.cs : implement some members.
public override string Value {
get {
+ if (ReadState != ReadState.Interactive)
+ return String.Empty;
XAttribute a = GetCurrentAttribute ();
if (a != null)
return a.Value;
{
int a_bak = attr;
bool av_bak = attr_value;
- MoveToElement ();
- MoveToAttribute (i);
try {
+ MoveToElement ();
+ MoveToAttribute (i);
return Value;
} finally {
attr = a_bak;
{
int a_bak = attr;
bool av_bak = attr_value;
- MoveToElement ();
- MoveToAttribute (name);
try {
- return Value;
+ MoveToElement ();
+ return MoveToAttribute (name) ? Value : null;
} finally {
attr = a_bak;
attr_value = av_bak;
{
int a_bak = attr;
bool av_bak = attr_value;
- MoveToElement ();
- MoveToAttribute (local, ns);
try {
- return Value;
+ MoveToElement ();
+ return MoveToAttribute (local, ns) ? Value : null;
} finally {
attr = a_bak;
attr_value = av_bak;
+2008-01-26 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XNodeReaderTest.cs : test for bug #335975.
+
2007-10-26 Atsushi Enomoto <atsushi@ximian.com>
* XTextTest.cs : added test for ToString().
xw.Close ();
Assert.AreEqual (xml.Replace ('\'', '"'), sw.ToString ());
}
+
+ [Test]
+ public void GetAttribute ()
+ {
+ // bug #335975
+ var rdr = new StringReader ("<root><val>Value</val></root>");
+ var xDoc = XDocument.Load (rdr);
+ XmlReader r = xDoc.CreateReader ();
+ Assert.AreEqual (String.Empty, r.Value, "#1");
+ Assert.IsNull (r.GetAttribute ("nil", "http://www.w3.org/2001/XMLSchema-instance"), "#2");
+ r.Read ();
+ Assert.AreEqual (String.Empty, r.Value, "#3");
+ Assert.IsNull (r.GetAttribute ("nil", "http://www.w3.org/2001/XMLSchema-instance"), "#4");
+ }
}
}