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;
}
}
|