[.Net] Waarom serialiseert XmlSerializer niet naar Xml?

Pagina: 1
Acties:

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
Misschien een beetje cryptische topic titel, maar het gaat hier om. Ik wil XmlSerializer gebruiken om objecten om te zetten in Xml, deze in mijn eigen Xml structuur te zetten en deze dan te transformeren. Daarbij duiken twee problemen op. Het serialiseren gaat goed, maar dan het volgende:

1: Waarom kan XmlSerializer alleen maar naar streams en writers serialiseren en niet naar XmlDocument? .Net moet toch intern een XmlDocument maken om te kunnen serialiseren, waarom kan ik die dan niet gebruiken?! Nu moet ik namelijk eerst serialiseren naar een string en deze dan weer laden door LoadXml in een XmlDocument voordat ik hem 'in-memory' heb. Of gebruik ik nu misschien deze class verkeerd?

2: Zoals boven beschreven kan ik dmv LoadXml mijn geserialiseerde object in een XmlDocument krijgen. Echter nu weet ik niet hoe ik die informatie aan een bestand XmlDocument krijg geplakt. In ASP kon het door het DocumentElement te pakken (das namelijk gewoon een XmlElement) van het aan te plakken object en deze dan dmv AppendChild aan het andere XmlDocument te plakken. Met zelfde methode krijg ik nu echter: "The node to be inserted is from a different document context.". Dus mijn vraag is hoe verander ik de document context van een bestaand XmlElement, of hoe los ik dit anders op?

Google en GOT zijn al doorzocht :)

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Je kunt naar een memstream serializen :)

XmlSerializer is verder nogal beperkt: als je object members heeft met een interface type doet hij het niet.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • Wouter Tinus
  • Registratie: Oktober 1999
  • Niet online

Wouter Tinus

Whee!

Voor punt twee moet je eens zoeken naar de functie "CloneNode", die doet wat jij wil :).

[ Voor 25% gewijzigd door Wouter Tinus op 26-08-2003 22:14 ]

Professioneel Hyves-weigeraar


  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
Efbe: ik lees je blog hoor :)
Zou het schrijven van een eigen XmlSerialiser heel veel werk zijn? Althans voor in mijn toepassingsgebied? En hoe zit dat bijvoorbeeld qua performance?
Ik zie dat .Net zelf ook een assembly genereert on-the-fly om een object te kunnen serialiseren, lijkt me ook niet zo snel.

@Wouter:
Het gaat nog steeds mis (zelfde foutmelding), ik heb deze code:
C#:
1
2
3
4
5
XmlDocument temp = new XmlDocument(); 
//laadt de uitkomst van de serialisatie
temp.LoadXml(w.ToString()); 
//xml_content is deel van het xml document dat getransformeerd moet worden
xml_content.AppendChild(temp.DocumentElement.CloneNode(true));

[ Voor 37% gewijzigd door zoepercavia op 26-08-2003 22:29 ]

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!


  • Wouter Tinus
  • Registratie: Oktober 1999
  • Niet online

Wouter Tinus

Whee!

Sorry, mijn fout, ik heb het even opgezocht in m'n eigen code en je moet "ImportNode" in plaats van "CloneNode" hebben om nodes van het ene naar het andere XmlDocument te kopiëren :).

[ Voor 8% gewijzigd door Wouter Tinus op 26-08-2003 23:01 ]

Professioneel Hyves-weigeraar


  • alley
  • Registratie: Mei 2002
  • Laatst online: 18-08 20:40

alley

ahuh

zoepercavia schreef op 26 August 2003 @ 21:49:
...
.Net moet toch intern een XmlDocument maken om te kunnen serialiseren
...
Nee, .Net gebruikt de XmlWriter aangezien deze vele malen sneller is dan een XmlDocument.

I am always doing that which I can not do, in order that I may learn how to do it. (Pablo Picasso)

Pagina: 1