Prechádzať zdrojové kódy

2003-06-01 Miguel de Icaza <[email protected]>

	* XmlSerializationReader.cs (UnknownAttribute, UnknownNode,
	UnknownElement): Add line number information.

svn path=/trunk/mcs/; revision=15042
Miguel de Icaza 22 rokov pred
rodič
commit
f709954efc

+ 5 - 0
mcs/class/System.XML/System.Xml.Serialization/ChangeLog

@@ -1,3 +1,8 @@
+2003-06-01  Miguel de Icaza  <[email protected]>
+
+	* XmlSerializationReader.cs (UnknownAttribute, UnknownNode,
+	UnknownElement): Add line number information.
+
 2003-05-29  Lluis Sanchez Gual <[email protected]>
 
 	* TypeData.cs, TypeTranslator.cs: Renamed some properties.

+ 33 - 6
mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReader.cs

@@ -551,20 +551,47 @@ namespace System.Xml.Serialization {
 
 		protected void UnknownAttribute (object o, XmlAttribute attr)
 		{
-			// TODO: line numbers
-			eventSource.OnUnknownAttribute (new XmlAttributeEventArgs (attr,0,0,o));
+			int line_number, line_position;
+			
+			if (Reader is XmlTextReader){
+				line_number = ((XmlTextReader)Reader).LineNumber;
+				line_position = ((XmlTextReader)Reader).LinePosition;
+			} else {
+				line_number = 0;
+				line_position = 0;
+			}
+			
+			eventSource.OnUnknownAttribute (new XmlAttributeEventArgs (attr, line_number, line_position, o));
 		}
 
 		protected void UnknownElement (object o, XmlElement elem)
 		{
-			// TODO: line numbers
-			eventSource.OnUnknownElement (new XmlElementEventArgs(elem,0,0,o));
+			int line_number, line_position;
+			
+			if (Reader is XmlTextReader){
+				line_number = ((XmlTextReader)Reader).LineNumber;
+				line_position = ((XmlTextReader)Reader).LinePosition;
+			} else {
+				line_number = 0;
+				line_position = 0;
+			}
+			
+			eventSource.OnUnknownElement (new XmlElementEventArgs (elem, line_number, line_position,o));
 		}
 
 		protected void UnknownNode (object o)
 		{
-			// TODO: line numbers
-			eventSource.OnUnknownNode (new XmlNodeEventArgs(0, 0, Reader.LocalName, Reader.Name, Reader.NamespaceURI, Reader.NodeType, o, Reader.Value));
+			int line_number, line_position;
+			
+			if (Reader is XmlTextReader){
+				line_number = ((XmlTextReader)Reader).LineNumber;
+				line_position = ((XmlTextReader)Reader).LinePosition;
+			} else {
+				line_number = 0;
+				line_position = 0;
+			}
+			
+			eventSource.OnUnknownNode (new XmlNodeEventArgs(line_number, line_position, Reader.LocalName, Reader.Name, Reader.NamespaceURI, Reader.NodeType, o, Reader.Value));
 			if (Reader.NodeType != XmlNodeType.Attribute)
 			{
 				Reader.Skip();