[Mono-devel-list] [patch] ResXResourceReader.cs bugfix

Joel Reed jreed at ddiworld.com
Wed Sep 15 08:32:36 EDT 2004


ResGen.exe properly handles CDATA sections in value nodes
of .resx files. monoresgen.exe doesn't properly return
these values within CDATA sections.

the attached 1 line patch fixes the problem.
sample testing files also included.

to compile & run test with and w/o patch:
monoresgen sample.resx && mcs temp.cs -resource:sample.resources && ./temp.exe

jr

ps. i assuming this list is like lkml - keep posting
your patch until someone comments/picks it up? if not please
excuse the resend.

-- 
------------------------------------------------------------
Joel W. Reed                                    412-257-3881
----------   http://home.comcast.net/~joelwreed/  ----------
-------------- next part --------------
--- class/System.Windows.Forms/System.Resources/ResXResourceReader.cs.orig	2004-09-14 22:14:00.000000000 -0400
+++ class/System.Windows.Forms/System.Resources/ResXResourceReader.cs	2004-09-14 21:58:53.000000000 -0400
@@ -87,7 +87,7 @@ namespace System.Resources
 			if (!gotelement)
 				return null;
 			while (reader.Read ()) {
-				if (reader.NodeType == XmlNodeType.Text) {
+				if (reader.NodeType == XmlNodeType.Text || reader.NodeType == XmlNodeType.CDATA) {
 					string v = reader.Value;
 					return v;
 				}
-------------- next part --------------
namespace test
{
		using System; 
    using System.Collections;
		using System.Reflection;
		using System.Resources;

		public class Test
		{
				public static int Main(string [] args) 
				{
          // Opens a resource reader and gets an enumerator from it.
          IResourceReader reader = new ResourceReader("sample.resources");
          IDictionaryEnumerator en = reader.GetEnumerator();
      
          // Goes through the enumerator, printing out the key and value pairs.
          while (en.MoveNext()) {
            Console.WriteLine();
            Console.WriteLine("Name: {0}", en.Key);
            Console.WriteLine("Value: {0}", en.Value);
          }
          reader.Close();

          return 0;
				}
		}
}
-------------- next part --------------
<?xml version="1.0" encoding="utf-8" ?>
<root>
  <resheader name="ResMimeType">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="Version">
    <value>1.0.0.0</value>
  </resheader>
  <resheader name="Reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="Writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
	<data name="joel">
		<value><![CDATA[reed]]></value>
	</data>
</root>


More information about the Mono-devel-list mailing list