у мелкомягких в xml (когда xls сохраняешь в xml) выходит такая штука:
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
т.е. у них ns по умолчанию указан, а потом ему ещё и псевдоним назначается.
пытаюсь повторить - не получается.
пишу вот такой код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace proExcelXML {
public class clsTest {
[XmlRoot(Namespace=someclass.cnst_myns_fullname)]
public class someclass {
public const string cnst_myns_fullname = "some full name of ns";
public string var1 = "1";
public string var2 = "2";
public string var3 = "3";
public string var4 = "4";
}
public static void SaveBook() {
someclass test = new someclass();
XmlSerializer xml = new XmlSerializer(typeof(someclass),someclass.cnst_myns_fullname);
using (System.IO.FileStream strm = new System.IO.FileStream(@"c:\test.xml", System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.Read)) {
string real_ns = someclass.cnst_myns_fullname;
real_ns += "1"; // to comment
XmlSerializerNamespaces nscoll = new XmlSerializerNamespaces();
nscoll.Add("myns", real_ns);
xml.Serialize(strm, test, nscoll);
}
}
}
}
когда в таком виде прогоняю, получаю:
<?xml version="1.0"?>
<someclass xmlns:myns="some full name of ns1" xmlns="some full name of ns">
<var1>1</var1>
<var2>2</var2>
<var3>3</var3>
<var4>4</var4>
</someclass>
а когда комментирую строку с to comment, то получаю:
<?xml version="1.0"?>
<myns:someclass xmlns:myns="some full name of ns">
<myns:var1>1</myns:var1>
<myns:var2>2</myns:var2>
<myns:var3>3</myns:var3>
<myns:var4>4</myns:var4>
</myns:someclass>
как мне добиться того, чтобы одно и то же namespace было объявлено как по умолчанию и при этом имело бы псевдоним myns?
Ответить
|