コード例 #1
0
 public AssociativeReader(
     [NotNull] ILogger testLogger,
     [NotNull] XmlReader reader,
     [NotNull] ScopeHandler scopeHandler)
 {
     _testLogger       = testLogger;
     _reader           = reader;
     _rootScopeHandler = scopeHandler;
 }
コード例 #2
0
 public void Scan()
 {
     while (_reader.Read())
     {
         if (_reader.NodeType == XmlNodeType.EndElement)
         {
             if (_virtualScopeCounter > 0)
             {
                 _virtualScopeCounter--;
                 continue;
             }
             _scopeHandler = _currentScope.Handler;
             _currentScope.ReportUnvisitedMandatoryHandlers(_testLogger);
             _currentScope = _currentScope.ParentScope;
             continue;
         }
         if (_virtualScopeCounter > 0)
         {
             if (!_reader.IsEmptyElement)
             {
                 _virtualScopeCounter++;
             }
             continue;
         }
         var name = _reader.GetName();
         if (_scopeHandler == null)
         {
             Debug.Assert(name == _rootScopeHandler.Name);
             _scopeHandler = _rootScopeHandler;
             _currentScope = new Scope(_scopeHandler);
             continue;
         }
         ScopeHandler scopeHandler;
         if (!_scopeHandler.SubDescriptors.TryGetValue(name, out scopeHandler))
         {
             if (!_reader.IsEmptyElement)
             {
                 _virtualScopeCounter++;
             }
             continue;
         }
         _currentScope.Visit(name);
         if (!_reader.IsEmptyElement)
         {
             _currentScope = new Scope(_currentScope, _scopeHandler);
             _scopeHandler = scopeHandler;
         }
         if (scopeHandler.Handler != null)
         {
             scopeHandler.Handler(_reader);
         }
     }
 }
コード例 #3
0
 public Scope([NotNull] Scope parentScope, [NotNull] ScopeHandler handler)
     : this(handler)
 {
     ParentScope = parentScope;
 }
コード例 #4
0
 public Scope([NotNull] ScopeHandler handler)
 {
     Handler            = handler;
     _mandatoryHandlers = new HashSet <XName>(handler.SubDescriptors
                                              .Values.Where(s => s.Mandatory).Select(s => s.Name));
 }