[c#/asp.net] Xml document als output gebruiken

Pagina: 1
Acties:

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 18:03
Hallo,

Ik wil graag in c# een xml document opbouwen en deze vervolgens terugsturen naar de client. Nu heb ik zelf al gekeken hoe ik dit kan bewerkstelligen, maar het is me niet gelukt.

Allereerst zijn heel veel voorbeelden op internet geënt op het maken of inlezen van een document. Dit wil ik niet. Er wordt uiteindeljik geen document weggeschreven, maar de output wordt direct met een ander content-type (iets met xml) teruggezonden naar de browser. Ten tweede zijn er voorbeelden waarbij gebruik wordt gemaakt van een string met xml gegevens, die dan ook weer wordt weggeschreven of af en toe wél direct wordt teruggezonden.

Wat ik wil is een xml document opbouwen als écht xml object. Met objecten. Nu heb je in c# een XmlElement en een XmlNode object. Deze laatste lijkt me handig, omdat het een abstracte klasse is die je kunt overerven. Op die manier zou je voor alle xml elementen die je hebt een klasse kunnen maken. Best veel werk, maar programmeertechnisch lijkt het mij wel netjes.

Maar ik kom niet echt verder. Ik heb al wat geprobeerd in het verleden met die klassen, maar krijg altijd problemen omdat je ze weer niet mag gebruiken, omdat je ze niet zomaar mag aanroepen, enz.

Weet iemand hier hoe je het bovenstaande wél kunt bereiken?

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Je zegt het zelf al: Een XmlDocument.
Hint:

C#:
1
2
3
4
public XmlDocument MyXmlDocument()
{
//... hier je nodes maken e.d.
}


Hier staat wel een nette manier imo.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 18:03
Dank je voor het voorbeeld, dat geeft inderdaad aardig aan hoe het zit.

Wat ik eigenlijk wil, is nog beter door middel van klassen werken. Meer zoiets:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
class TrainingElement : XmlElement
{
  public TrainingElement(string attribute1, string attribute2)
  {
    // Constructor
  }

  public void AddSubElement(XmlElement xmlElement)
  {
    // Sub element toevoegen
  }
}


Voor elk type xml node maak je dus een klasse aan die een standaard klasse overerft. Ik zou verwachten dat een dergelijke constructie wel reeds aanwezig zou zijn, maar dat is dus niet zo begrijp ik?

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Maak dan een strong typed Dataset en exporteer die als XML. Daar zijn die voor bedoeld. Als je een XSD helpt kan VS die automagisch voor je genereren.

:w whoami

[ Voor 43% gewijzigd door PhysicsRules op 28-11-2006 11:23 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Hoe kan het .NET framework nu weten welke elementen / classes jij wil hebben ?

Hetgeen jij wil, kan je wel gaan doen, maar dat vraagt veel tijd als je het manueel wil doen.
Wat je wel kan doen, is een class laten generen op basis van een XML bestand dat jij hebt.
Stel, je hebt een xml document, dan kan je op basis daarvan classes laten genereren. Kijk daarvoor eens naar de xsd utility die bij .NET geleverd wordt.

https://fgheysels.github.io/


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 18:03
whoami schreef op dinsdag 28 november 2006 @ 11:21:
Hoe kan het .NET framework nu weten welke elementen / classes jij wil hebben ?
Ja, niet natuurlijk. Dat begrijp ik ook wel :P. Maar het gaat puur om de basisklasse, je zult natuurlijk altijd zelf de te gebruiken elementen moeten definiëren. Maar ehm, blijkbaar zit die basisklasse er niet in.

Het is inderdaad veel werk, maar ik vind het persoonlijk een nette oplossing.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Hoezo de basisclass zit er niet in ?

Ik zou toch eens naar xsd.exe kijken ;)

https://fgheysels.github.io/


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 27-11 10:50

_Thanatos_

Ja, en kaal

En wat is er mis met serialization?

Gewoon het Serializable attribute aan je class hangen en je bent al voor 90% klaar :)

[ Voor 55% gewijzigd door _Thanatos_ op 28-11-2006 12:33 ]

日本!🎌


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Wij gebruiken hier inderdaad ook gewoon serialization.

Je kan dan gewoon een class maken en die door middel van een XmlSerializer naar Xml serializen. Om de de bool wat te finetunen kan je nog wat attributes aan je members hangen zoals XmlElementAttribute

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1