Avatar billede torbenhk Nybegynder
21. februar 2007 - 13:37 Der er 6 kommentarer og
1 løsning

Elementer i xml vises ikke i korrekt order

Hej eksperter.
Jeg har et lille simpelt problem, som jeg ikke lige helt syntes at kunne løse.
Jeg har indlæst et xml-skema i et DataSet som har denne opbygning, kort skrevet bare for at få ideen (problemet):

<Element1>
<Navn> Peter </Navn>
<Element2>
<Tid> 12:00 </Tid>
<Dato> 27/02/2006 </Dato>
</Element2>
<Efternavn> Jensen </Efternavn>
<Element1>

Datasettet laver godt nok 2 tabeller og relationer mellem de 2 tabeller. Men problemet er at element2 skrives til sidst, altså sådan her:
<Element1>
<Navn> Peter </Navn>
<Efternavn> Jensen </Efternavn>
<Element2>
<Tid> 12:00 </Tid>
<Dato> 27/02/2006 </Dato>
</Element2>
<Element1>

Nu kan det færdige xml dokument ikke valideres op imod det xml skema, da elementer ikke er placeret korrekt.
Er der nogen der kan hjælpe med det ?
Min kode ser sådan ud:
.NET 2.0 , c#:
DataSet ds = new DataSet()
ds.ReadXmlSchema(@"XMLSchema1.xsd");
DataRow row1 = ds.Tables["Element1"].NewRow();
row1["Envelope_ID"] = 12;
row1["Navn"] = "MyName";
row1["Efternavn"] = "Test";
ds.Tables["Envelope"].Rows.Add(row1);
         
DataRow row2= ds.Tables["Element2"].NewRow();
row2["Envelope_ID"] = 12;
row2["date"] = DateTime.Today;
row2["time"] = 1200;
ds.Tables["Sent"].Rows.Add(row2);
ds.WriteXml("testxml.xml");
Avatar billede dr_chaos Nybegynder
21. februar 2007 - 14:17 #1
Du er nok nødt til manuelt at opbygge dit xml manuelt.
Jeg mener når du laver nested xml fra dataset vil child altid blive placeret sidst.
Avatar billede torbenhk Nybegynder
21. februar 2007 - 14:36 #2
Problmet er lidt, at skemaet jeg loader, er ret stort. Der er cirka 1000 tabeller i datasettet.
Skemaet bliver brugt til utallige xml dokumenter, så der bliver lidt af et problem at lave dem manuelt.
Jeg syntes det er meget nemt at loade det ind i datasettet og så indsættet de data man har og udskrive xml dokumentet.
Er der en anden måde man evt. kan gøre det på ?
Jeg er nød til at bruge det skema.
Avatar billede dr_chaos Nybegynder
21. februar 2007 - 14:47 #3
måske kan du bruge noget xsl til at transformerer dit xml.
Men det kræver at du kender element navnene.
Avatar billede torbenhk Nybegynder
21. februar 2007 - 14:55 #4
Jeg kender element navnene og indtil videre har jeg kun fundet 2 steder at der skal laves om i rækkefælgerne.
Kan jeg tage det færdige xml dokument, uden skemaet, og så når jeg kender element navnen indsætte (bytte rundt) på child elementet ?
Hvis vi tager udgangs punt i mit eksempel.
Avatar billede dr_chaos Nybegynder
21. februar 2007 - 15:14 #5
ja men jeg tror du skal kigge på xsl eller xslt
Avatar billede torbenhk Nybegynder
22. februar 2007 - 13:47 #6
Tusinde tak for hjælpen dr chaos, det var jo lige præcis xslt jeg skulle bruge, til at løse denne opgave.
p.s. Hvordan giver man de point, man har sat ved spørgsmålet ?
Avatar billede dr_chaos Nybegynder
22. februar 2007 - 13:57 #7
Np :)
Jeg skal ligge et svar og så skal du accepterer det.
Jeg plejer som regel ikke at lægge svar før jeg får bekræftet at jeg har gjort mig "fortjent" til points :)
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