Sign In | Register Now About Bytes | Help | Site Map
Connecting Tech Pros Worldwide

q1 ???

Question posted by: Tom (Guest) on June 27th, 2008 07:20 PM
This is probably easy, but I have spent several hours trying to get it to
work with no luck.

I'm just using the XmlSerializer class to write an XML file:

XmlSerializer s = new XmlSerializer(typeof(myType));;
XmlSerializerNamespaces n = new XmlSerializerNamespaces();
n.Add(string.Empy, string.Empy);
Stream fs = new FileStream(name, FileMode.Create);
XmlTextWriter tw = new XmlTextWriter(fs, Encoding.UTF8);
tw.Formatting = Formatting.None;
s.Serialize(tw, myObject, n);
tw.Close();

Anyway, the above works almost to what I want, but it produces the following
XML file:

<?xml version="1.0" encoding="utf-8" ?>
<q1:myObjElement1 xmlns:q1="myXSD.xsd">
<MyElement2>
<MyElement3>
</MyElement3>
</MyElement2>
</q1:myObjeElement1>

My problem is that I want to get rid of that "q1:" string, and just
serialize my object into XML. What is the "q1:" string anyway, and why is
it there?

I can get rid of the "q1:" string by changing the following attribute in my
code from:

[System.Xml.Serialization.XmlRootAttribute(IsNullab le = false,
Namespace="myXSD.xsd")];

to:

[System.Xml.Serialization.XmlRootAttribute(IsNullab le = false)];

However, if I do that, then I get:
<?xml version="1.0" encoding="utf-8" ?>
<myObjElement1>
<MyElement2>
<MyElement3>
</MyElement3>
</MyElement2>
</myObjeElement1>

The problem here is that I need the line:

<myObjElement1>

to really read:

<myObjElement1 xmlns="myXSD.xsd">


So in short:
How can I get rid of the "q1:" string and keep the xmlns attribute in my
root element?

Thank you.



Tom's Avatar
Tom
Guest
n/a Posts
June 27th, 2008
07:20 PM
#2

Re: q1 ???

"Tom" <johnthompson1@hotmail.comwrote in message
news:A9705A0F-A43A-411A-A012-1B8B97526748@microsoft.com...
Quote:
This is probably easy, but I have spent several hours trying to get it to
work with no luck.
>
I'm just using the XmlSerializer class to write an XML file:
>
XmlSerializer s = new XmlSerializer(typeof(myType));;
XmlSerializerNamespaces n = new XmlSerializerNamespaces();
n.Add(string.Empy, string.Empy);
Stream fs = new FileStream(name, FileMode.Create);
XmlTextWriter tw = new XmlTextWriter(fs, Encoding.UTF8);
tw.Formatting = Formatting.None;
s.Serialize(tw, myObject, n);
tw.Close();
>
Anyway, the above works almost to what I want, but it produces the
following XML file:
>
<?xml version="1.0" encoding="utf-8" ?>
<q1:myObjElement1 xmlns:q1="myXSD.xsd">
<MyElement2>
<MyElement3>
</MyElement3>
</MyElement2>
</q1:myObjeElement1>
>
My problem is that I want to get rid of that "q1:" string, and just
serialize my object into XML. What is the "q1:" string anyway, and why is
it there?
>
I can get rid of the "q1:" string by changing the following attribute in
my code from:
>
[System.Xml.Serialization.XmlRootAttribute(IsNullab le = false,
Namespace="myXSD.xsd")];
>
to:
>
[System.Xml.Serialization.XmlRootAttribute(IsNullab le = false)];
>
However, if I do that, then I get:
<?xml version="1.0" encoding="utf-8" ?>
<myObjElement1>
<MyElement2>
<MyElement3>
</MyElement3>
</MyElement2>
</myObjeElement1>
>
The problem here is that I need the line:
>
<myObjElement1>
>
to really read:
>
<myObjElement1 xmlns="myXSD.xsd">
>
>
So in short:
How can I get rid of the "q1:" string and keep the xmlns attribute in my
root element?
>
Thank you.
>
>
>


Well, since I couldn't find an easy way to do this, I just added the
attribute after I created the file:

XmlDocument d = new XmlDocument();
XmlElement e;
FileStream fs = new FileStream("myFile", FileMode.Open, FileMode.Read,
FileMode.Read);
XmlTextReader tr = new XmlTextReader(fs);
d.Load(tr);
tr.Close();
e = d.DocumentElement;
e.SetAttribute("xmlns", "myNamespace");
d.Save("myFile");



Joe Fawcett's Avatar
Joe Fawcett
Guest
n/a Posts
June 27th, 2008
07:20 PM
#3

Re: q1 ???

"Tom" <johnthompson1@hotmail.comwrote in message
news:A9705A0F-A43A-411A-A012-1B8B97526748@microsoft.com...
Quote:
This is probably easy, but I have spent several hours trying to get it to
work with no luck.
>
I'm just using the XmlSerializer class to write an XML file:
>
XmlSerializer s = new XmlSerializer(typeof(myType));;
XmlSerializerNamespaces n = new XmlSerializerNamespaces();
n.Add(string.Empy, string.Empy);
Stream fs = new FileStream(name, FileMode.Create);
XmlTextWriter tw = new XmlTextWriter(fs, Encoding.UTF8);
tw.Formatting = Formatting.None;
s.Serialize(tw, myObject, n);
tw.Close();
>
Anyway, the above works almost to what I want, but it produces the
following XML file:
>
<?xml version="1.0" encoding="utf-8" ?>
<q1:myObjElement1 xmlns:q1="myXSD.xsd">
<MyElement2>
<MyElement3>
</MyElement3>
</MyElement2>
</q1:myObjeElement1>
>
My problem is that I want to get rid of that "q1:" string, and just
serialize my object into XML. What is the "q1:" string anyway, and why is
it there?
>
I can get rid of the "q1:" string by changing the following attribute in
my code from:
>
[System.Xml.Serialization.XmlRootAttribute(IsNullab le = false,
Namespace="myXSD.xsd")];
>
to:
>
[System.Xml.Serialization.XmlRootAttribute(IsNullab le = false)];
>
However, if I do that, then I get:
<?xml version="1.0" encoding="utf-8" ?>
<myObjElement1>
<MyElement2>
<MyElement3>
</MyElement3>
</MyElement2>
</myObjeElement1>
>
The problem here is that I need the line:
>
<myObjElement1>
>
to really read:
>
<myObjElement1 xmlns="myXSD.xsd">
>
>
So in short:
How can I get rid of the "q1:" string and keep the xmlns attribute in my
root element?
>
Thank you.
>
>

It's not really an attribute, it's a namepace declaration.
It shouldn't matter to other processes whether it has a prefix or is a
default namespace.
However:
[XmlRoot(Namespace ="myXSD.xsd", ElementName = "myObjElement1")]
should get you <myObjElement1 xmlns="myXSD.xsd">

--

Joe Fawcett (MVP - XML)

http://joe.fawcett.name



 
Not the answer you were looking for? Post your question . . .
189,170 Experts ready to help you find a solution.
Sign up for a free account, or Login (if you're already a member).

Latest Articles: Read & Comment
  • Didn't find the answer you were looking for?
    Post Your Question
  • Top Community Contributors