dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] pnetlib ChangeLog System.Xml/XmlTextReader.cs t...


From: Radek Polak
Subject: [dotgnu-pnet-commits] pnetlib ChangeLog System.Xml/XmlTextReader.cs t...
Date: Wed, 31 Jan 2007 09:15:49 +0000

CVSROOT:        /sources/dotgnu-pnet
Module name:    pnetlib
Changes by:     Radek Polak <radekp>    07/01/31 09:15:49

Modified files:
        .              : ChangeLog 
        System.Xml     : XmlTextReader.cs 
        tests/System.Xml: TestXmlTextReader.cs 

Log message:
        fix character references in xml attributes

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnetlib/ChangeLog?cvsroot=dotgnu-pnet&r1=1.2472&r2=1.2473
http://cvs.savannah.gnu.org/viewcvs/pnetlib/System.Xml/XmlTextReader.cs?cvsroot=dotgnu-pnet&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/pnetlib/tests/System.Xml/TestXmlTextReader.cs?cvsroot=dotgnu-pnet&r1=1.11&r2=1.12

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/ChangeLog,v
retrieving revision 1.2472
retrieving revision 1.2473
diff -u -b -r1.2472 -r1.2473
--- ChangeLog   31 Jan 2007 08:58:42 -0000      1.2472
+++ ChangeLog   31 Jan 2007 09:15:49 -0000      1.2473
@@ -1,5 +1,12 @@
 2007-01-31  Radek Polak  <address@hidden>
 
+       * System.Xml/XmlTextReader.cs: Fix problem with reading character
+       references in attributes.
+
+       * tests/System.Xml/TestXmlTextReader.cs: Add test case for above fix.
+
+2007-01-31  Radek Polak  <address@hidden>
+
        * System.Xml/ConformanceLevel.cs,
        System.Xml/Private/SelectNodeList.cs,
        System.Xml/Private/XmlDocumentNavigator.cs,

Index: System.Xml/XmlTextReader.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/System.Xml/XmlTextReader.cs,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- System.Xml/XmlTextReader.cs 21 Oct 2006 14:48:12 -0000      1.62
+++ System.Xml/XmlTextReader.cs 31 Jan 2007 09:15:49 -0000      1.63
@@ -1035,12 +1035,31 @@
                                                        seg.SetInfo(true, 
log.ToString(textStart, textEnd));
                                                }
 
+                                               // remeber position
+                                               int position = log.Length;
+
                                                // move to the '&' character
                                                input.NextChar();
 
-                                               // add a new reference segment 
to the list
+                                               // read character or entity 
reference
+                                               String name;
+                                               char ch;
+                                               if(ReadReferenceNormalize(out 
name, out ch))
+                                               {
+                                                       // character reference 
(e.g. &amp;)
+                                                       log.Length = position;
+                                                       log.Append(ch);
+                                               }
+                                               else
+                                               {
+                                                       // we leave entity 
refence as it is
+                                                       log.Length = position;
+                                                       log.Append('&');
+                                                       log.Append(name);
+                                                       log.Append(';');
+                                               }
                                                seg = segments[segLen++];
-                                               seg.SetInfo(false, 
nt.Add(ReadReference()));
+                                               seg.SetInfo(true, 
log.ToString(position, log.Length - position));
 
                                                // store the start index of the 
next segment
                                                textStart = log.Length;

Index: tests/System.Xml/TestXmlTextReader.cs
===================================================================
RCS file: /sources/dotgnu-pnet/pnetlib/tests/System.Xml/TestXmlTextReader.cs,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- tests/System.Xml/TestXmlTextReader.cs       21 Oct 2006 14:48:12 -0000      
1.11
+++ tests/System.Xml/TestXmlTextReader.cs       31 Jan 2007 09:15:49 -0000      
1.12
@@ -253,6 +253,7 @@
                AssertEquals("ReadElementStringOnEmpyElement (3)", 
String.Empty, xr.ReadElementString());
                AssertEquals("ReadElementStringOnEmpyElement (4)", 
XmlNodeType.EndElement, xr.NodeType);
        }
+
                // Test the Depth property.
        public void TestXmlTextReaderDepth()
                        {
@@ -266,4 +267,19 @@
                                AssertEquals("Depth (7)", 0, xr.Depth);
                                Clear();
                        }
+
+       // Test XML with char references &amp; and entities &xxx; in attributes.
+       public void TestXmlTextReaderCharReferenceAndEntityInAttr()
+                       {
+                               string xmlText = "<doc a=\"C &amp;&amp; D\" 
b=\"C &xxx; D\" />";
+                               Reset(new StringReader(xmlText));
+                               xr.MoveToContent();
+                               AssertEquals("CharReferenceAndEntityInAttr 
(1)", "doc", xr.Name);
+                               xr.MoveToFirstAttribute();
+                               AssertEquals("CharReferenceAndEntityInAttr 
(2)", "a", xr.Name);
+                               AssertEquals("CharReferenceAndEntityInAttr 
(3)", "C && D", xr.Value);
+                               xr.MoveToNextAttribute();
+                               AssertEquals("CharReferenceAndEntityInAttr 
(4)", "b", xr.Name);
+                               AssertEquals("CharReferenceAndEntityInAttr 
(5)", "C &xxx; D", xr.Value);
+                       }
 }; // class TestXmlTextReader




reply via email to

[Prev in Thread] Current Thread [Next in Thread]