Solved

Small Question on XML Serialization using ASP.NET C#

Posted on 2009-05-02
7
566 Views
Last Modified: 2012-05-06
In shown in Code below, I have an XML file that I need to generate using XML Schema thru XML Serialzation.

In this XML file, there is a prefix 'Shop:' being used throughout all the nodes. This Prefix is not present in the Class File that I generated using XSD.

How to I add this prefix in all the nodes of the XML file that I generate?

I am using MS ASP.NET C# to achieve this.

Thanks!
<Shop:StoreInfo>

        <Shop:ItemName>

                    <Shop:ProductCode>String</Shop:ProductCode>

                     <Shop:ProductType>String</Shop:ProductType>

        </Shop:ItemName>

</Shop:StoreInfo>

Open in new window

0
Comment
Question by:meetpd
  • 3
  • 3
7 Comments
 
LVL 96

Expert Comment

by:Bob Learned
Comment Utility
Shop: would normally be associated with a namespace.  If you don't have a namespace, I believe that you should be able to generate a namespace in order to get that prefix.
0
 
LVL 21

Expert Comment

by:MogalManic
Comment Utility
You need to serialize with the XmlSerializerNamespaces class and use the XmlNamespace attribute on your class:
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializernamespaces(VS.80).aspx

So the code would be something like this:

public class Run

{

   public static void Main()

   {

      Run test = new Run();

      test.SerializeObject("XmlNamespaces.xml");

   }

 

   public void SerializeObject(string filename)

   {

      XmlSerializer s = new XmlSerializer(typeof(Books));

      // Writing a file requires a TextWriter.

      TextWriter t = new StreamWriter(filename);
 

      /* Create an XmlSerializerNamespaces object and add two

      prefix-namespace pairs. */

      XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

      ns.Add("Shop", "http://www.MyCompanyName.Com/ShopXml");
 

      // Create a ShopInfo instance.

      ShopInfo shp = new ShopInfo();

      /*...Setup Info class.../*
 

      s.Serialize(t,shp,ns);

      t.Close();

   }

}

//...

[XmlType(Namespace ="http://www.MyCompanyName.Com/ShopXml")]

public class ShopInfo

{

//...The rest of class definition...

}

Open in new window

0
 

Author Comment

by:meetpd
Comment Utility
Thanks for the sample code.

But this code changes the name of the namespace. What we need here to add prefix to all class names so that ALL nodes will have prefix 'Shop:'.

Can you please suggest something?

Thanks!

0
What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

 
LVL 21

Expert Comment

by:MogalManic
Comment Utility
If you want the default namespace to be the "Shop" namespace, then just change the XmlSerializer constructor (line 11 in above code) to:
      XmlSerializer s = new XmlSerializer(typeof(ShopInfo), "http://www.MyCompanyName.Com/ShopXml");


This will produce XML something like this:
<?xml version="1.0" encoding="utf-16"?>

  ShopName
  <!--Other XML nodes-->



0
 

Author Comment

by:meetpd
Comment Utility
Thanks...but will this also create 'Shop:' as prefix for ALL nodes as given below?

 <Shop:ItemName>
                    <Shop:ProductCode>String</Shop:ProductCode>
                     <Shop:ProductType>String</Shop:ProductType>
        </Shop:ItemName>

Really appreciate your quick response!
0
 
LVL 21

Accepted Solution

by:
MogalManic earned 500 total points
Comment Utility
It should.  Try it out.

This is from the documentation:http://msdn.microsoft.com/en-us/library/kw0f5wee(VS.80).aspx

defaultNamespace
    The default namespace to use for all the XML elements.
0
 

Author Comment

by:meetpd
Comment Utility
Yes, it worked!! Thanks for solving my problem.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now