+2003-12-11 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+
+ * XmlDocument.cs : Fixed ReadNode() to call AppendChild() to document
+ after setting all attribute nodes. Modified ReadNode() to handle
+ Depth comparison and error handling (!= to <). It allows MS's
+ SgmlReader bug that returns incorrect Depth.
+
2003-12-11 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
* XmlDocumentNavigator.cs : Fixed MoveToNextAttribute (and
case XmlNodeType.Element:
XmlElement element = CreateElement (reader.Prefix, reader.LocalName, reader.NamespaceURI);
element.IsEmpty = reader.IsEmptyElement;
- if(currentNode != null)
- currentNode.AppendChild (element);
- else
- resultNode = element;
// set the element's attributes.
while (reader.MoveToNextAttribute ()) {
reader.MoveToElement ();
+ // MS.NET adds element to document after its attributes are filled.
+ if(currentNode != null)
+ currentNode.AppendChild (element);
+ else
+ resultNode = element;
+
if (!reader.IsEmptyElement)
currentNode = element;
break;
} while (ignoredWhitespace || reader.Depth > startDepth ||
(reader.Depth == startDepth && reader.NodeType == XmlNodeType.EndElement));
- if (startDepth != reader.Depth && reader.EOF)
+ if (startDepth < reader.Depth && reader.EOF)
throw new XmlException ("Unexpected end of xml reader.");
return resultNode != null ? resultNode : newNode;
}