Update of /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15960/src/NetReflector/Serialisers
Modified Files:
XmlTypeSerialiser.cs
Log Message:
some refactoring of invalid node detection. now also detects duplicates.
Index: XmlTypeSerialiser.cs
===================================================================
RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/Serialisers/XmlTypeSerialiser.cs,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** XmlTypeSerialiser.cs 7 Apr 2005 04:30:40 -0000 1.5
--- XmlTypeSerialiser.cs 15 Apr 2005 04:45:09 -0000 1.6
***************
*** 91,99 ****
{
IDictionary childNodes = new ListDictionary();
! foreach (XmlNode attribute in node.Attributes)
! childNodes[attribute.Name] = attribute;
!
! foreach (XmlNode childNode in node.ChildNodes) // check for duplicates
! childNodes[childNode.Name] = childNode;
foreach (IXmlMemberSerialiser serialiser in MemberSerialisers)
--- 91,96 ----
{
IDictionary childNodes = new ListDictionary();
! AddChildNodesToDictionary(node.Attributes, childNodes, table);
! AddChildNodesToDictionary(node.ChildNodes, childNodes, table);
foreach (IXmlMemberSerialiser serialiser in MemberSerialisers)
***************
*** 109,113 ****
foreach (XmlNode orphan in childNodes.Values)
! table.OnUnusedNode(orphan);
}
}
--- 106,122 ----
foreach (XmlNode orphan in childNodes.Values)
! table.OnInvalidNode(new InvalidNodeEventArgs(orphan, "Unused node detected: " + orphan.OuterXml));
! }
!
! private void AddChildNodesToDictionary(IEnumerable nodes, IDictionary childNodes, NetReflectorTypeTable table)
! {
! foreach (XmlNode node in nodes)
! {
! if (childNodes.Contains(node.Name))
! {
! table.OnInvalidNode(new InvalidNodeEventArgs(node, "Duplicate node detected: " + node.OuterXml));
! }
! childNodes[node.Name] = node;
! }
}
}
|