Problém se zápisem Xml v C# – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Problém se zápisem Xml v C# – .NET – Fórum – Programujte.comProblém se zápisem Xml v C# – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
12. 4. 2010   #1
-
0
-

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??

Nahlásit jako SPAM
IP: 81.201.60.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
13. 4. 2010   #2
-
0
-

A nejde to tohe nějak zakomponovat XmlSerializerNamespaces?

Nahlásit jako SPAM
IP: 85.207.166.–
JardaJirava0
Stálý člen
13. 4. 2010   #3
-
0
-

Ahoj, jde o to, že jsi použil nevhodnou metodu pro zápis atribut a tato zapisuje i namespace. Doporučím ti tedy místo metody WriteStartAttribute použít metodu WriteAttributeString s dvěma parametry.

Pěkný den

Jarda Jirava

Nahlásit jako SPAM
IP: 194.213.35.–
MCAD, MCPD
http://jirava.net/blog
http://xaml.cz - Magazín moderních technologií založených na XAML
13. 4. 2010   #4
-
0
-

To liborb : Ahoj, předpokládám, že tohle tě napadlo, když jsi si všimnul volání



....
FingerprintDatabase.Serialize(writer, database);
....

To ale není metoda využívající prostředků pro serializace, které jsou v balíku Xml.Serialization - jde o mojí proceduru, která vypadá velice podobně kódu, který je uvedem výše.

Nahlásit jako SPAM
IP: 81.201.60.–
13. 4. 2010   #5
-
0
-

To JardaJirava : Děkuji mnohokrát; bylo to tak, jak jsi říkal.

Nahlásit jako SPAM
IP: 81.201.60.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 55 hostů

Podobná vlákna

Problém se zápisem — založil cenda585

Problém se zápisem fopen — založil ProTom

Mensi problem s xml — založil Anonymní uživatel

Problém s velikostí xml — založil stoker303

Problém s čítaním XML — založil Anoym

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý