@@ -2,6 +2,7 | |||||
2 | using Implab.Parsing; |
|
2 | using Implab.Parsing; | |
3 | using System; |
|
3 | using System; | |
4 | using System.Collections.Generic; |
|
4 | using System.Collections.Generic; | |
|
5 | using System.Globalization; | |||
5 | using System.IO; |
|
6 | using System.IO; | |
6 | using System.Linq; |
|
7 | using System.Linq; | |
7 | using System.Text; |
|
8 | using System.Text; | |
@@ -37,7 +38,8 namespace Implab.JSON { | |||||
37 | readonly bool m_flattenArrays; |
|
38 | readonly bool m_flattenArrays; | |
38 | readonly string m_arrayItemName; |
|
39 | readonly string m_arrayItemName; | |
39 | readonly XmlNameTable m_nameTable; |
|
40 | readonly XmlNameTable m_nameTable; | |
40 |
|
41 | readonly bool m_disposeParser; | ||
|
42 | ||||
41 | public JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) { |
|
43 | public JSONXmlReader(JSONParser parser, JSONXmlReaderOptions options) { | |
42 | Safe.ArgumentNotNull(parser, "parser"); |
|
44 | Safe.ArgumentNotNull(parser, "parser"); | |
43 | m_parser = parser; |
|
45 | m_parser = parser; | |
@@ -49,6 +51,7 namespace Implab.JSON { | |||||
49 | m_flattenArrays = options.FlattenArrays; |
|
51 | m_flattenArrays = options.FlattenArrays; | |
50 | m_arrayItemName = options.ArrayItemName ?? "item"; |
|
52 | m_arrayItemName = options.ArrayItemName ?? "item"; | |
51 | m_nameTable = options.NameTable ?? new NameTable(); |
|
53 | m_nameTable = options.NameTable ?? new NameTable(); | |
|
54 | m_disposeParser = options.DisposeParser; | |||
52 | } else { |
|
55 | } else { | |
53 | m_prefix = String.Empty; |
|
56 | m_prefix = String.Empty; | |
54 | m_namespaceUri = String.Empty; |
|
57 | m_namespaceUri = String.Empty; | |
@@ -56,6 +59,7 namespace Implab.JSON { | |||||
56 | m_flattenArrays = false; |
|
59 | m_flattenArrays = false; | |
57 | m_arrayItemName = "item"; |
|
60 | m_arrayItemName = "item"; | |
58 | m_nameTable = new NameTable(); |
|
61 | m_nameTable = new NameTable(); | |
|
62 | m_disposeParser = false; | |||
59 | } |
|
63 | } | |
60 | } |
|
64 | } | |
61 |
|
65 | |||
@@ -72,7 +76,7 namespace Implab.JSON { | |||||
72 |
|
76 | |||
73 | public override int Depth { |
|
77 | public override int Depth { | |
74 | get { |
|
78 | get { | |
75 | return m_localNameStack.Count+m_depthCorrection; |
|
79 | return m_localNameStack.Count + m_depthCorrection; | |
76 | } |
|
80 | } | |
77 | } |
|
81 | } | |
78 |
|
82 | |||
@@ -270,7 +274,14 namespace Implab.JSON { | |||||
270 | } |
|
274 | } | |
271 |
|
275 | |||
272 | public override string Value { |
|
276 | public override string Value { | |
273 | get { return m_parser.ElementValue == null ? String.Empty : m_parser.ElementValue.ToString(); } |
|
277 | get { | |
|
278 | if (m_parser.ElementValue == null) | |||
|
279 | return String.Empty; | |||
|
280 | if (Convert.GetTypeCode(m_parser.ElementValue) == TypeCode.Double) | |||
|
281 | return ((double)m_parser.ElementValue).ToString(CultureInfo.InvariantCulture); | |||
|
282 | else | |||
|
283 | return (string)m_parser.ElementValue; | |||
|
284 | } | |||
274 | } |
|
285 | } | |
275 |
|
286 | |||
276 | void SetLocalName(string name) { |
|
287 | void SetLocalName(string name) { | |
@@ -290,12 +301,13 namespace Implab.JSON { | |||||
290 | } |
|
301 | } | |
291 |
|
302 | |||
292 | public override void Close() { |
|
303 | public override void Close() { | |
293 |
|
304 | |||
294 | } |
|
305 | } | |
295 |
|
306 | |||
296 | protected override void Dispose(bool disposing) { |
|
307 | protected override void Dispose(bool disposing) { | |
297 | if (disposing) { |
|
308 | if (disposing) { | |
298 |
|
|
309 | if (m_disposeParser) | |
|
310 | m_parser.Dispose(); | |||
299 | } |
|
311 | } | |
300 | base.Dispose(disposing); |
|
312 | base.Dispose(disposing); | |
301 | } |
|
313 | } |
General Comments 0
You need to be logged in to leave comments.
Login now