[Top][All Lists]
[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. &)
+ 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 & and entities &xxx; in attributes.
+ public void TestXmlTextReaderCharReferenceAndEntityInAttr()
+ {
+ string xmlText = "<doc a=\"C && 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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnetlib ChangeLog System.Xml/XmlTextReader.cs t...,
Radek Polak <=