i've created own xmltextwriter example, can remove namespaces.
public class nonamespacexmlwriter : xmltextwriter { //provide many contructors need public nonamespacexmlwriter(system.io.textwriter output) : base(output) { formatting = system.xml.formatting.indented; } public override void writestartdocument() {} public override void writestartelement(string prefix, string localname, string ns) { base.writestartelement("", localname, ""); } } when use works ok reason skips <xml ... > </xml> tags. writestartdocument() never called.
i can't specify settings since have private setter , use static method xmlwriter.create cannot override. tried overriding settings themselves, no avail:
public override xmlwritersettings settings { { return new xmlwritersettings() {omitxmldeclaration = false}; } } my code serialize is:
using (stringwriter textwriter = new stringwriter()) { using (nonamespacexmlwriter xmlwriter = new nonamespacexmlwriter(textwriter)) { xs.serialize(xmlwriter, p); } xml = textwriter.tostring(); } any idea how can xml tag appear, or why it's disappearing?
if goal here remove namespaces serialized xml, i'd suggest easier way: can specify xmlserializernamespaces empty namespace illustrade in sample application below
class program { static void main(string[] args) { player player = new player() { id = 102, firstname = "danny", lastname = "topscorer", averagegoalspergame = 3.5, totalgoalsscored = 150 }; xmlserializer serializer = new xmlserializer(typeof(player)); xmlwritersettings settings = new xmlwritersettings() { omitxmldeclaration = true, indent = true, encoding = encoding.utf8 }; stringbuilder output = new stringbuilder(); xmlwriter writer = xmlwriter.create(output, settings); xmlserializernamespaces xns = new xmlserializernamespaces(); xns.add(string.empty, string.empty); serializer.serialize(writer, player, xns); console.writeline(output.tostring()); console.readline(); } } public class player { public int id { get; set; } public string firstname { get; set; } public string lastname { get; set; } public int totalgoalsscored { get; set; } public double averagegoalspergame { get; set; } } it output:
<player> <id>102</id> <firstname>danny</firstname> <lastname>topscorer</lastname> <totalgoalsscored>150</totalgoalsscored> <averagegoalspergame>3.5</averagegoalspergame> </player> otherwise player element defaults:
<player xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http:// www.w3.org/2001/xmlschema">
Comments
Post a Comment