Avatar billede majbom Novice
11. november 2006 - 18:16 Der er 11 kommentarer og
1 løsning

Oprette XML-fil

hejsa experter

jeg er ny i xml-verdenen, så i må lige bære over med mig :)

jeg skal have oprettet et xml-dokument, hvilket jeg godt kan, men på min metode er der noget der irriterer mig, og jeg vil mene/håbe at det kan ændres :)

for at oprette filen gør jeg således:
XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
xmlWriter.WriteStartElement("movies");
xmlWriter.WriteStartElement("movie");
xmlWriter.WriteStartElement("title","");
xmlWriter.WriteEndElement();
xmlWriter.WriteStartElement("info","");
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.Close();

så jeg får følgende struktur:
<movies>
  <movie>
    <title />
    <info />
  </movie>
</movies>

og umiddelbart er det min løsning for at kunne tilføje nye elementer. hvis jeg ikke først opretter det første element "manuelt", kan jeg ikke tilføje elementer med denne stump kode:
newrow["title"] = "far til fire";
newrow["info"] = "info bla bla";
data.Tables[0].Rows.Add(newrow);

da jeg får at vide at data.Tables[0] ikke eksisterer.

det kan godt bruges som det er nu, men det er lidt irriterende at have det tomme element, da jeg er sikker på at det kan undgåes.

jeg håber det giver mening, det er lidt svært at forklare, så hvis der er noget i ikke forstår, så spørg endelig.

på forhånd mange tak
Avatar billede dj_uncas Nybegynder
11. november 2006 - 18:26 #1
Hvor kommer data.Tables[0] og newrow["title"] fra? Og hvad er det helt præcist du gerne vil?
Avatar billede majbom Novice
11. november 2006 - 18:32 #2
data.tables[0] kommer herfra: data.ReadXml(findata);

denne linje står efter xmlWriter.Close();
findata = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

det jeg gerne vil, er at oprette en xml-fil hvor jeg efterfølgende kan indsætte elementer der ser således ud:
<movie>
  <title>Jarhead</title>
  <info>info ting</info>
</movie>

hvilket jeg kun kan få til at virke hvis jeg først laver et element "manuelt", som i mit første indlæg...

jeg har fundet det meste af koden på nettet og bygget videre på...
Avatar billede arne_v Ekspert
11. november 2006 - 18:56 #3
var det ikke nemmere at create et XmlDocument ?
Avatar billede majbom Novice
11. november 2006 - 19:09 #4
det kunne da godt tænkes :)
jeg ved det ikke, jeg er som sagt meget ny på dette område...

kan du give et eksempel arne?
Avatar billede arne_v Ekspert
11. november 2006 - 19:11 #5
Avatar billede dj_uncas Nybegynder
11. november 2006 - 19:17 #6
Du skal iterere over noget data du har, og lave XML ud fra det data - har jeg forstået det rigtigt?

Med XmlWriter kan du lave dette stunt:

XmlTextWriter writer = new XmlTextWriter( filename, Encoding.Default );

writer.WriteStartDocument();
writer.WriteStartElement( "movies" );

while( ... )
{
    writer.WriteStartElement( "movie" );

    writer.WriteStartElement( "title" );
    writer.WriteValue( "Jarhead" );
    writer.WriteEndElement();

    writer.WriteStartElement( "info" );
    writer.WriteValue( "info-ting" );
    writer.WriteEndElement();

    writer.WriteEndElement();
}

writer.WriteEndElement();

writer.WriteEndDocument();
Avatar billede majbom Novice
11. november 2006 - 19:58 #7
det skal bruges i et meget simpelt program, der blot skal vise en liste over de film der er i xml-filen.
første gang programmet åbnes, vil der naturligvis ikke være nogen fil, så den skal oprettes. det skal også være muligt at tilføje film.

jeg prøver at kigger på det i har skrevet, mange tak indtil videre :)
Avatar billede majbom Novice
11. november 2006 - 20:23 #8
-> dj_uncas - det kan jeg sagtens, det du skriver dér, men det er ikke det jeg ønsker, håber i bedre kan forstå ideen når i læser mit indlæg fra kl 19.58
Avatar billede majbom Novice
12. november 2006 - 15:26 #9
nå, det lader til at jeg må leve med at have det tomme element...
Avatar billede dj_uncas Nybegynder
12. november 2006 - 15:40 #10
Kan du ikke bare oprette filen første gang der skal skrives til den? Så kommer du over at have en fil liggende uden noget data i...

Ellers kan du så ikke bare oprette den med kun et element:

<movies />

??
Avatar billede majbom Novice
12. november 2006 - 15:52 #11
på den måde kan jeg ikke få det til at virke, men af en eller anden grund henter den ikke det tomme element med mere, så det er egentlig løst nu :)
Avatar billede majbom Novice
23. december 2006 - 11:29 #12
svar
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