Hi,
I've been trying a long time now to generate some XML using MC++ and
XmlSerializer. I have a piece of C# code that produces exactly what I want,
but I simply can't get the MC++ code to write the same thing. Below I have
included two minimal compilable samples that illustrate my problem.
The C# code produces this XML:
<?xml version="1.0" encoding="utf-8"?>
<LandXML xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Units name="unit1" />
<Units name="unit2" />
</LandXML>
and the MC++ code produces this:
<?xml version="1.0" encoding="utf-8"?>
<LandXML xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Units>
<Units name="unit1" />
<Units name="unit2" />
</Units>
</LandXML>
Now follows the C# code:
using System;
using System.Xml;
using System.Xml.Serialization;
using System.Collections;
[Serializable]
public class UnitsCollection : ArrayList
{
public Units Add(Units obj) { base.Add(obj); return obj; }
public Units Add() { return Add(new Units()); }
}
[XmlType(TypeName="Units"),XmlRoot,Serializable]
public class Units
{
public Units() { }
[XmlAttribute(AttributeName="name")]
public string __name;
}
[XmlRoot(ElementName="LandXML",IsNullable=false),Se rializable]
public class LandXML
{
public LandXML() { }
[XmlElement(Type=typeof(Units),ElementName="Units", IsNullable=false)]
public UnitsCollection __UnitsCollection;
}
public class HelloWorld
{
public static void Main()
{
LandXML lx = new LandXML();
UnitsCollection units = new UnitsCollection();
Units unit1 = new Units();
Units unit2 = new Units();
unit1.__name = "unit1";
unit2.__name = "unit2";
units.Add(unit1);
units.Add(unit2);
lx.__UnitsCollection = units;
XmlSerializer ser = new XmlSerializer(typeof(LandXML));
XmlTextWriter writer = new XmlTextWriter("c_sharp.xml",
System.Text.Encoding.UTF8);
writer.Formatting = Formatting.Indented;
ser.Serialize(writer, lx);
writer.Close();
}
}
Here is the exact same program written with MC++ (I catch exceptions too):
#using <mscorlib.dll>
#using <System.Xml.dll>
#using <System.Data.dll>
#using <System.dll>
using namespace System;
using namespace System::Xml::Serialization;
using namespace System::Xml;
using namespace System::Data;
using namespace System::Reflection;
using namespace System::Collections;
[XmlRootAttribute(ElementName="Units", IsNullable=false),
SerializableAttribute]
public __gc class Units {
public:
Units() { }
[XmlAttributeAttribute(AttributeName="name")]
System::String* __name;
};
/*
* If I switch Index for Item which I think is what should be used
* I can't compile because of error C2392:
* covariant returns types are not supported in managed types
*/
[SerializableAttribute, DefaultMemberAttribute("Index")]
public __gc class UnitsCollection : public ArrayList
{
public:
UnitsCollection() { }
Units* Add(Units* obj) { __super::Add(obj); return obj; }
Units* Add() { return Add(new Units()); }
void Insert(int index, Units* obj) { __super::Insert(index, obj); }
void Remove(Units* obj) { __super::Remove(obj); }
__property Units* get_Index(int index) { return
static_cast<Units*>(__super::Item[index]); }
__property void set_Index(int index, Units* u) { __super::Item[index] =
u; }
};
[XmlRootAttribute(ElementName="LandXML", IsNullable=false),
SerializableAttribute]
public __gc class LandXML {
public:
LandXML() { }
[XmlElement(Type=__typeof(UnitsCollection),ElementN ame="Units",IsNullable=false)]
UnitsCollection* __UnitsCollection;
};
void WriteExceptionInfo(Exception*);
int main()
{
try {
LandXML* lx = new LandXML();
UnitsCollection* units = new UnitsCollection;
Units* unit1 = new Units();
Units* unit2 = new Units();
unit1->__name = "unit1";
unit2->__name = "unit2";
units->Add(unit1);
units->Add(unit2);
lx->__UnitsCollection = units;
XmlSerializer* ser = new XmlSerializer(__typeof(LandXML));
XmlTextWriter* writer = new XmlTextWriter("mc++.xml",
System::Text::Encoding::UTF8);
writer->Formatting = Formatting::Indented;
ser->Serialize(writer, lx);
writer->Close();
}
catch( System::Exception* ex ) {
WriteExceptionInfo(ex);
if( ex!=0 )
WriteExceptionInfo(ex->InnerException);
}
return 0;
}
void WriteExceptionInfo(System::Exception* ex)
{
System::Console::WriteLine( "--------- Exception Data ---------" );
System::Console::WriteLine( "Message: {0}", ex->Message );
System::Console::WriteLine( "Exception Type: {0}",
ex->GetType()->FullName );
System::Console::WriteLine( "Source: {0}", ex->Source );
System::Console::WriteLine( "StrackTrace: {0}", ex->StackTrace );
System::Console::WriteLine( "TargetSite: {0}", ex->TargetSite );
}
Can anyone explain to me what is going on here? Am I missing something, or
is the XmlSerializer not working correct with MC++?
Thank you.
--
Daniel 4 3608
"Daniel Lidström" <so*****@microsoft.com> wrote in message news:8g*****************************@40tude.net... I have a piece of C# code that produces exactly what I want, but I simply can't get the MC++ code to write the same thing.
: : [XmlType(TypeName="Units"),XmlRoot,Serializable] public class Units
: : [XmlRootAttribute(ElementName="Units", IsNullable=false), SerializableAttribute] public __gc class Units {
: : Am I missing something, or is the XmlSerializer not working correct with MC++?
The C# Units class has an XmlTypeAttribute, anonymous XmlRootAttribute,
and SerializableAttribute on it.
The MC++ Units class has an XmlRootAttribute telling it to emit a Units
element, and a SerializableAttribute on it.
Is there some reason these attributes aren't the same between C# and
Managed C++? This could be the cause for receiving the different XML
serializations.
Derek Harmon
"Daniel Lidström" <so*****@microsoft.com> wrote in message news:8g*****************************@40tude.net... I have a piece of C# code that produces exactly what I want, but I simply can't get the MC++ code to write the same thing.
: : [XmlType(TypeName="Units"),XmlRoot,Serializable] public class Units
: : [XmlRootAttribute(ElementName="Units", IsNullable=false), SerializableAttribute] public __gc class Units {
: : Am I missing something, or is the XmlSerializer not working correct with MC++?
The C# Units class has an XmlTypeAttribute, anonymous XmlRootAttribute,
and SerializableAttribute on it.
The MC++ Units class has an XmlRootAttribute telling it to emit a Units
element, and a SerializableAttribute on it.
Is there some reason these attributes aren't the same between C# and
Managed C++? This could be the cause for receiving the different XML
serializations.
Derek Harmon
On Sat, 29 May 2004 19:47:25 -0400, Derek Harmon wrote: "Daniel Lidström" <so*****@microsoft.com> wrote in message news:8g*****************************@40tude.net... I have a piece of C# code that produces exactly what I want, but I simply can't get the MC++ code to write the same thing. :: [XmlType(TypeName="Units"),XmlRoot,Serializable] public class Units :: [XmlRootAttribute(ElementName="Units", IsNullable=false), SerializableAttribute] public __gc class Units { :: Am I missing something, or is the XmlSerializer not working correct with MC++?
The C# Units class has an XmlTypeAttribute, anonymous XmlRootAttribute, and SerializableAttribute on it.
The MC++ Units class has an XmlRootAttribute telling it to emit a Units element, and a SerializableAttribute on it.
Is there some reason these attributes aren't the same between C# and Managed C++? This could be the cause for receiving the different XML serializations.
Whatever attribute I put on the MC++ Units class I still get the unexpected
xml output. Has anyone been able to generate this kind of xml using MC++?
<?xml version="1.0" encoding="utf-8"?>
<LandXML xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Units name="unit1" />
<Units name="unit2" />
.... arbitrary number of Units ...
</LandXML>
If so, I would be very happy to see the code that produced it.
Thanks!
--
Daniel
On Sat, 29 May 2004 19:47:25 -0400, Derek Harmon wrote: "Daniel Lidström" <so*****@microsoft.com> wrote in message news:8g*****************************@40tude.net... I have a piece of C# code that produces exactly what I want, but I simply can't get the MC++ code to write the same thing. :: [XmlType(TypeName="Units"),XmlRoot,Serializable] public class Units :: [XmlRootAttribute(ElementName="Units", IsNullable=false), SerializableAttribute] public __gc class Units { :: Am I missing something, or is the XmlSerializer not working correct with MC++?
The C# Units class has an XmlTypeAttribute, anonymous XmlRootAttribute, and SerializableAttribute on it.
The MC++ Units class has an XmlRootAttribute telling it to emit a Units element, and a SerializableAttribute on it.
Is there some reason these attributes aren't the same between C# and Managed C++? This could be the cause for receiving the different XML serializations.
Whatever attribute I put on the MC++ Units class I still get the unexpected
xml output. Has anyone been able to generate this kind of xml using MC++?
<?xml version="1.0" encoding="utf-8"?>
<LandXML xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Units name="unit1" />
<Units name="unit2" />
.... arbitrary number of Units ...
</LandXML>
If so, I would be very happy to see the code that produced it.
Thanks!
--
Daniel This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: David |
last post by:
Would I be right in saying the following files are equilavent, except
first on is HTML and second one is XML?
Code:
<?
echo "<h1>Hello world!</h1>".<br>;
echo "This is HTML";
?>
|
by: Mel |
last post by:
Are we going backwards ? (please excuse my spelling...)
In my opinion an absolute YES !
Take a look at what we are doing ! we create TAGS, things like <H1> etc.
and although there are tools...
|
by: Daniel Lidström |
last post by:
Hi,
I've been trying a long time now to generate some XML using MC++ and
XmlSerializer. I have a piece of C# code that produces exactly what I want,
but I simply can't get the MC++ code to write...
|
by: Edward Diener |
last post by:
In C++ an overridden virtual function in a derived class must have the exact
same signature of the function which is overridden in the base class, except
for the return type which may return a...
|
by: |
last post by:
is there any performance diffrence between MC++ 2003 ,other .NET languages
and MC++ 2005 (cause of an optimization) ???
|
by: Shawn B. |
last post by:
Greetings,
With a Managed class, if I'm #including a Windows SDK header file, and call
an API, it appears (according to .NET Reflector) that it automatically
generates a for each API call that...
|
by: ward |
last post by:
Greetings.
Ok, I admit it, I bit off a bit more than I can chew.
I need to complete this "Generate Report" page for my employer and I'm
a little over my head. I could use some additional...
|
by: InvalidLastName |
last post by:
We have been used XslTransform. .NET 1.1, for transform XML document, Dataset with xsl to HTML. Some of these html contents contain javascript and links. For example:
// javascript
if (a > b)...
|
by: gunimpi |
last post by:
http://www.vbforums.com/showthread.php?p=2745431#post2745431
********************************************************
VB6 OR VBA & Webbrowser DOM Tiny $50 Mini Project Programmer help
wanted...
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome former...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: aa123db |
last post by:
Variable and constants
Use var or let for variables and const fror constants.
Var foo ='bar';
Let foo ='bar';const baz ='bar';
Functions
function $name$ ($parameters$) {
}
...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
| |