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.
|
|
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");
|
|
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).
|