-
Whats wrong with this code?
Dear All,
I want to create a XML document by using MemoryStream but it gives me an
XMLException ( Error Message: The root element is missing.).
Can anyone tell me where I am wrong?
private void CreateXMLDoc(string filename)
{
// Create an instance of the XmlSerializer class;
// specify the type of object to serialize.
XmlSerializer serializer = new XmlSerializer(typeof(PurchaseOrder));
PurchaseOrder po=new PurchaseOrder();
// Create an address to ship and bill to.
Address billAddress = new Address();
billAddress.Name = "Rita Hernandez";
billAddress.Line1 = "1 Main St.";
billAddress.City = "AnyTown";
billAddress.State = "WA";
billAddress.Zip = "00000";
// Set ShipTo and BillTo to the same addressee.
po.ShipTo = billAddress;
po.OrderDate = System.DateTime.Now.ToLongDateString();
// Create an OrderedItem object.
OrderedItem i1 = new OrderedItem();
i1.ItemName = "Widget S";
i1.Description = "Small widget";
i1.UnitPrice = (decimal) 5.23;
i1.Quantity = 3;
i1.Calculate();
// Insert the item into the array.
OrderedItem [] items = {i1};
po.OrderedItems = items;
// Calculate the total cost.
decimal subTotal = new decimal();
foreach(OrderedItem oi in items)
{
subTotal += oi.LineTotal;
}
po.SubTotal = subTotal;
po.ShipCost = (decimal) 12.51;
po.TotalCost = po.SubTotal + po.ShipCost;
// Serialize the purchase order, and close the TextWriter.
Stream xyz = new MemoryStream();
serializer.Serialize(xyz, po);
TextReader reader = new StreamReader(xyz);
XmlDocument doc = new XmlDocument();
//Create a reader.
try
{
XmlTextReader xmreader = new XmlTextReader(reader);
while (xmreader.Read())
{
XmlNode a = doc.ReadNode(xmreader);
doc.AppendChild(a);
}
doc.Save("Test.xml");
}
catch(Exception e)
{
Console.WriteLine("Error Message: " + e.Message);
}
}
Thanks a lot in advance
Many Regards
Sunil
-
Re: Whats wrong with this code?
Sunil Menon <sunil@itb-india.com> wrote in message
news:3ca17c61$1@10.1.10.29...
> // Serialize the purchase order, and close the TextWriter.
> Stream xyz = new MemoryStream();
> serializer.Serialize(xyz, po);
I think you need to explicitly reposition the MemoryStream back to the
beginning here with:
xyz.Seek(0, SeekOrigin.Begin);
> TextReader reader = new StreamReader(xyz);
> XmlDocument doc = new XmlDocument();
> file://Create a reader.
> try
> {
> XmlTextReader xmreader = new XmlTextReader(reader);
> while (xmreader.Read())
> {
> XmlNode a = doc.ReadNode(xmreader);
> doc.AppendChild(a);
> }
The reader is already at the end of the stream, so no nodes are appended to
the doc above.
> doc.Save("Test.xml");
This then raises the error, since the doc is empty (i.e. no root node).
--
David.
-
Re: Whats wrong with this code?
> Can anyone tell me where I am wrong?
Sunil: Well, you're in the wrong group, for starters. ;-) This is a VB.NET
group. Questions about C# code should be posted to the csharp.general group.
---
Phil Weber
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Development Centers
-- Android Development Center
-- Cloud Development Project Center
-- HTML5 Development Center
-- Windows Mobile Development Center
|