Avatar billede jolly_jay Nybegynder
05. december 2008 - 14:40 Der er 3 kommentarer

Dataset, xml og xsd

Hej

Jeg har et hovedbrud der driller.

*Jeg har oprettet et dataset fra et XSD skema vha. xds.exe - super fint det dur :-) *Jeg adderer data til mit fine dataset - også kanon - det dur :-) *Jeg skriver datasettet til xml ved WriteXml metoden - den skriver det dur - næsten... :-/

For der kommer et ekstra niveau på min genererede XML fil. Der er en rod node med datasættets navn der "omklamrer" min ellers så fine xml - øv :-(

Jeg har googlet rundt og set andre have problemet - det nærmeste jeg fandt på en løsning er beskrevet her :
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=344486&SiteID=1&pageid=0
men det har jeg også prøvet og det hjalp mig ikke. Er der nogen der kan fortælle mig hvad det er jeg lige skal tveake for at det kører ?

Min lille skrive kode version 1 hvor jeg benytter dataset direkte:
              ...
            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteStartDocument();
            broendRapportDataSet.WriteXml(xmlWriter,
XmlWriteMode.IgnoreSchema);
            xmlWriter.WriteEndDocument();

Min let tilrettede skrivekode efter det jeg googlede - hvor jeg bruger XmlDataDocument :

            XmlTextWriter xtw = new XmlTextWriter(xmlFilename, Encoding.UTF8);
            xtw.Formatting = Formatting.Indented;
            xddDataSet.WriteContentTo(xtw);
            xtw.Close();


Mit output - BroendRapportGroup bør være roden - jeg vil ikke have noget <NewDataSet> snask:

<NewDataSet xmlns="http://www.danva.dk/xml/schemas/dandas/20080101">
  <BroendRapportGroup>
    <Referencesys>
      <EnhedVinkel>grad</EnhedVinkel>
      <KoordinatsysKode>4</KoordinatsysKode>
      <KotesysKode>1</KotesysKode>
    </Referencesys>
    <BroendRapport Rapportnr="fsdfds">
      <BroendTilstand>
        <Knudenavn>fdsfds</Knudenavn>
        <DatoOpdateret>2008-12-03T16:05:10.4081854+01:00</
DatoOpdateret>
        <DatoOprettet>2008-12-03T16:05:10.4081854+01:00</DatoOprettet>
      </BroendTilstand>
    </BroendRapport>
  </BroendRapportGroup>
</NewDataSet>

Øv - jeg gør et eller andet galt - hvad er det jeg misforstår ?
Avatar billede jokkejensen Novice
05. december 2008 - 14:50 #1
et dataset skal nødvendigvis have en rod node, ellers vil det ikke være valid xml hvis du har flere tables.

Navngiv det vha dataset.DataSetName eller fjern det vha xslt eller dan et xmlDocument, og dan et XmlNodeList("/Newdataset/") og gem.

/J
Avatar billede jolly_jay Nybegynder
05. december 2008 - 15:08 #2
tjo - men når den XSD jeg opretter datasettet efter har sin egen rod - så vil jeg jo helst have at den genererede XML retter sig efter det XSD skema - og ikke blander datasettets navn ind i det - det er jo ligegyldig i den kontekst....hmmm

Det "rigtige" rodelement er <BroendRapportGroup> og det er DET der overholder namespacet "http://www.danva.dk/xml/schemas/dandas/20080101" - ikke datasettet

øh
Avatar billede jokkejensen Novice
05. december 2008 - 15:22 #3
nej korrekt.

Men hvor i:

broendRapportDataSet.WriteXml(xmlWriter,
XmlWriteMode.IgnoreSchema);
            xmlWriter.WriteEndDocument();

Siger du at den skal benytte dit skema ?

/J
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester