Seem to have some funny behaviour going on when I call the XMLTextWriter...
XmlTextWriter writer = new XmlTextWriter(targetFileName, Encoding.UTF8);
writer.WriteValue("< ?xml version=\"1.0\" encoding=\"UTF-8\"?>");
writer.WriteString(Environment.NewLine);
writer.WriteStartElement("video","UploadXsd");
writer.WriteString(Environment.NewLine);
writer.WriteStartElement("title");
writer.WriteString(Environment.NewLine);
writer.WriteString(title);
writer.WriteString(Environment.NewLine);
writer.WriteEndElement();
writer.WriteString(Environment.NewLine);
writer.WriteStartElement("description");
writer.WriteString(Environment.NewLine);
writer.WriteString(description);
writer.WriteString(Environment.NewLine);
writer.WriteEndElement();
writer.WriteString(Environment.NewLine);
writer.WriteStartElement("contributor");
writer.WriteString(Environment.NewLine);
writer.WriteString(contributor);
writer.WriteString(Environment.NewLine);
writer.WriteEndElement();
writer.WriteString(Environment.NewLine);
writer.WriteStartElement("subject");
writer.WriteString(Environment.NewLine);
writer.WriteString(subject);
writer.WriteString(Environment.NewLine);
writer.WriteEndElement();
writer.WriteString(Environment.NewLine);
writer.WriteEndElement();
writer.WriteString(Environment.NewLine);
writer.Flush();
writer.Close();
Then I see that it is creating this:
< ?xml version="1.0" encoding="UTF-8"?>
<video xmlns="UploadXsd">
<title>
MyTitle
</title>
<description>
MyDescription
</description>
<contributor>
MyContributor
</contributor>
<subject>
MySubject
</subject>
</video>
Why has the writer encoded the first element into Html but not the rest?, and more to the point how do I stop it doing this? I just want to create the first element.
Do not use WriteValue()
, it does the encoding. Use WriteProcessingInstruction instead.
XmlWriter writer = XmlWriter.Create("output.xml");
writer.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-16'");
writer.WriteStartElement("root");
writer.Close();