aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers.Serialization/XmlFormatReader.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-09-08 20:02:11 -0500
committerrogerk <devnull@localhost>2011-09-08 20:02:11 -0500
commitc2d2c1adaf447bbc80194d8bce6c4e0442a7f47a (patch)
treea00d169fff4221e3779cb48e0e4c6001a1d5f604 /src/ProtocolBuffers.Serialization/XmlFormatReader.cs
parent8f0dcf3df1548a1eff0bed54a9b992f55b8f72d5 (diff)
downloadprotobuf-c2d2c1adaf447bbc80194d8bce6c4e0442a7f47a.tar.gz
protobuf-c2d2c1adaf447bbc80194d8bce6c4e0442a7f47a.tar.bz2
protobuf-c2d2c1adaf447bbc80194d8bce6c4e0442a7f47a.zip
first pass at adding required changes
Diffstat (limited to 'src/ProtocolBuffers.Serialization/XmlFormatReader.cs')
-rw-r--r--src/ProtocolBuffers.Serialization/XmlFormatReader.cs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/ProtocolBuffers.Serialization/XmlFormatReader.cs b/src/ProtocolBuffers.Serialization/XmlFormatReader.cs
index cb2cb2ea..0d3bca67 100644
--- a/src/ProtocolBuffers.Serialization/XmlFormatReader.cs
+++ b/src/ProtocolBuffers.Serialization/XmlFormatReader.cs
@@ -136,6 +136,41 @@ namespace Google.ProtocolBuffers.Serialization
}
/// <summary>
+ /// Reads the root-message preamble specific to this formatter
+ /// </summary>
+ public override AbstractReader ReadStartMessage()
+ {
+ return ReadStartMessage(_rootElementName);
+ }
+
+ public AbstractReader ReadStartMessage(string element)
+ {
+ string field;
+ Assert(PeekNext(out field) && field == element);
+
+ XmlReader child = _input.ReadSubtree();
+ while (!child.IsStartElement() && child.Read())
+ {
+ continue;
+ }
+ child.Read();
+ return CloneWith(child);
+ }
+
+ /// <summary>
+ /// Reads the root-message close specific to this formatter, MUST be called
+ /// on the reader obtained from ReadStartMessage(string element).
+ /// </summary>
+ public override void ReadEndMessage()
+ {
+ Assert(0 == _input.Depth);
+ if(_input.NodeType == XmlNodeType.EndElement)
+ {
+ _input.Read();
+ }
+ }
+
+ /// <summary>
/// Merge the provided builder as an element named <see cref="RootElementName"/> in the current context
/// </summary>
public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)