Dobrý den všem na foru.
Potřeboval bych poradit při řešení prapodivného problému, který se objeví při zápisu Xml. Zde je kus kódu, jehož jediným účelem je vytvořit Xml soubor a naplnit ho nějakými daty.
XmlWriter writer = null;
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
writer = XmlWriter.Create(analyzer.ConfigFileFullPath, settings);
writer.WriteStartDocument();
writer.WriteStartElement(XML_ROOT_ELEM);
writer.WriteStartAttribute(XML_ROOT_ATTR_PASS,
analyzer.RemoteAccessPassword);
writer.WriteStartAttribute(XML_ROOT_ATTR_CHANNEL,
analyzer.ServerChannelName);
writer.WriteStartAttribute(XML_ROOT_ATTR_TCPPORT,
analyzer.TcpListeningPort.ToString());
// Save dbs
writer.WriteStartElement(XML_DATABASES);
foreach (FingerprintDatabase database in analyzer.Databases)
{
writer.WriteStartElement(XML_DATABASE);
FingerprintDatabase.Serialize(writer, database);
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
}
finally
{
writer.Close();
}
Očekával jsem, výsledek ve tvaru standardního Xml (bez namespace) ovšem, to co se vytvořilo vypadá nějak takto:
<?xml version="1.0" encoding="utf-8"?>
<FINGERPRINT_ANALYZER p1:PASSWORD="" p1:SERVER_CHANNEL="" p2:TCP_PORT="" xmlns:p2="100" xmlns:p1="TRICKY">
<DATABASES />
</FINGERPRINT_ANALYZER>
Můžete si všimnout, že před každým atributem je přidaný namespace (p1,p2); ty ale nepochází ode mně. Na stránkách MS msdn.microsoft.com jsem se dozvěděl, že by mohlo jít o tzv XmlNameTable. Tahle technologie by měla sloužit pro zlepšení poměru množství informace/velikost souboru tím, že se shluknout atributy o stejné hodnotě. Btw. používám .NET 3.5.
Proto se ptám - nevíte někdo, jak to vypnout??