|
From: | Neil Cawse |
Subject: | [DotGNU]XMLReader |
Date: | Sat, 8 Nov 2003 11:40:34 -0500 |
Im completing ResX and ImageList serialization support in
System.Windows.Forms. Once this is done, we will be able to run an “off
the shelf” exe created using .net on our portable platform. The ResX format is pretty straightforward. The ResX is
written and tested against Microsofts System.XML. The writing of ResX works ok using
our System.XML but the reading doesn’t because the XMLReader is returning
empty values when I read. Ive attached a snippet of code below that uses the
reader. What I know about XML is a little dangerous. Would it be
possible for someone to take a look at this and see where the XMLReader is
failing? Who are the XML gurus? The test code to see the failure is in the latest cvs: ilrun
FormsTest, click on the ResX tab, click “write” then “read”
and it will fail. thanks! Neil In Resources\ResourceReader.cs // Load the contents of an XML resource stream. private void Load(XmlTextReader reader) { reader.WhitespaceHandling
= WhitespaceHandling.None; //
Create NameTable reader.NameTable.Add("resheader"); reader.NameTable.Add("resmimetype"); reader.NameTable.Add("version"); reader.NameTable.Add("reader"); reader.NameTable.Add("writer"); reader.NameTable.Add("data"); reader.NameTable.Add("name"); reader.NameTable.Add("type"); reader.NameTable.Add("mimeType"); reader.NameTable.Add("value"); reader.NameTable.Add(ResXResourceWriter.BinSerializedObjectMimeType); reader.NameTable.Add(ResXResourceWriter.SoapSerializedObjectMimeType); while (reader.Read()) { if
(reader.NodeType == XmlNodeType.Element) { //
Deal with the header if
(reader.LocalName == "resheader") { switch
(reader["name"]) { case
"resmimetype": headerMimeType
= reader.ReadElementString(); break; case
"version": headerVersion
= reader.ReadElementString(); break; case
"reader": headerReader
= reader.ReadElementString(); break; case
"writer": headerWriter
= reader.ReadElementString(); break; } } //
Deal with the data else
if (reader.LocalName == "data") { String
name = reader["name"]; String
type = reader["type"]; String
mimeType = reader["mimeType"]; String
value; if
(reader.NodeType == XmlNodeType.Element) value
= reader.ReadElementString(); else value
= reader.Value; **** Problem - value is always null. if
(mimeType != null) LoadMime(name,
type, mimeType, value); else
if (type != null) LoadType(name,
type, value); else loadedData[name]
= value; } } } } |
[Prev in Thread] | Current Thread | [Next in Thread] |