From: Oleg T. <he...@us...> - 2004-10-22 14:56:51
|
Update of /cvsroot/mvp-xml/XInclude/v1/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32008/v1/src Modified Files: XIncludingReader.cs Log Message: Fixed ReadOuterXml()/ReadInnerXml() and Depth. Index: XIncludingReader.cs =================================================================== RCS file: /cvsroot/mvp-xml/XInclude/v1/src/XIncludingReader.cs,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- XIncludingReader.cs 20 Oct 2004 19:28:12 -0000 1.13 +++ XIncludingReader.cs 22 Oct 2004 14:56:42 -0000 1.14 @@ -29,9 +29,7 @@ /// </summary> /// <author>Oleg Tkachenko, ol...@tk...</author> /// <remarks> - /// Open Issues: - /// o Outer/Inner/Xml/Text - /// o Depth on included items? + /// Open Issues: /// o GetAttribute(int i)? /// o MoveToAttribute(int i)? /// o GetEntity on custom XmlResolver @@ -331,7 +329,12 @@ /// <summary>See <see cref="XmlReader.Depth"/></summary> public override int Depth { - get { return _reader.Depth; } + get { + if (_readers.Count == 0) + return _reader.Depth; + else + return ((XmlReader)_readers.Peek()).Depth + _reader.Depth; + } } /// <summary>See <see cref="XmlReader.EOF"/></summary> @@ -595,14 +598,28 @@ return _reader.XmlLang; case XIncludingReaderState.ExposingXmlLangAttrValue: return String.Empty; - default: - StringWriter sw = new StringWriter(); - XmlTextWriter xw = new XmlTextWriter(sw); - int depth = Depth; - while (Read() && Depth != depth) - xw.WriteNode(this, false); - xw.Close(); - return sw.ToString(); + default: + if (NodeType == XmlNodeType.Element) + { + int depth = Depth; + if (Read()) + { + StringWriter sw = new StringWriter(); + XmlTextWriter xw = new XmlTextWriter(sw); + while (Depth > depth) + xw.WriteNode(this, false); + xw.Close(); + return sw.ToString(); + } + else + return String.Empty; + } + else if (NodeType == XmlNodeType.Attribute) + { + return Value; + } + else + return String.Empty; } } @@ -619,12 +636,20 @@ return @"xml:lang="" + _reader.XmlLang + @"""; case XIncludingReaderState.ExposingXmlLangAttrValue: return String.Empty; - default: - StringWriter sw = new StringWriter(); - XmlTextWriter xw = new XmlTextWriter(sw); - xw.WriteNode(this, false); - xw.Close(); - return sw.ToString(); + default: + if (NodeType == XmlNodeType.Element) + { + StringWriter sw = new StringWriter(); + XmlTextWriter xw = new XmlTextWriter(sw); + xw.WriteNode(this, false); + xw.Close(); + return sw.ToString(); + } + else if (NodeType == XmlNodeType.Attribute) + { + return String.Format("{0=\"{1}\"}", Name, Value); + } else + return String.Empty; } } |