Avatar billede daywalker123 Nybegynder
24. juni 2008 - 22:49 Der er 7 kommentarer og
1 løsning

Import af xml fil og brug af xml fil

Hej

Jeg skal have lavet et lille program i C# hvor man kan importere en xml log fil hvorefter programmet piller nogle bestemte attributter ud fra denne xml fil og evt. konvertere dem til et excel sheet.

Jeg har stort set fundet ud af den sidste del med at få læst de rigtige attributter fra xml filen - mangler bare hvordan jeg "importerer" filen i programmet - det er vel med et upload felt men hvor skal filen stores midlertidligt og hvordan håndterer man dette?
Avatar billede aaberg Nybegynder
24. juni 2008 - 22:54 #1
Er det en asp.net app eller en Windows app?

Uanset hvad, så behøver du vel ikke at midlertiddig gemme filen, du kan vel bare loade den via XmlDocument.LoadXml(string xmlString), eller XmlDocument.Load(string filename).

Eller bruger du noget andet end et XmlDocument?
Avatar billede daywalker123 Nybegynder
24. juni 2008 - 23:05 #2
smider lige hvad jeg har lavet indtil videre:

using System;
using System.IO;
using System.Xml;

public class Sample
{

    public static void Main()
    {
        int i = 65;
        char c = ( char ) i;
        XmlDocument xmlDocument = new XmlDocument();
        xmlDocument.Load( @"C:\S2.xml" );
        foreach( XmlElement LogEvent in xmlDocument.SelectNodes( @"Events/LogEvent" ) )
        {

            Console.WriteLine( LogEvent.GetAttribute( "Action" ) );
            Console.WriteLine( c );
                        foreach( XmlAttribute attribute in LogEvent.Attributes )
                        {
                            Console.WriteLine( "attribute with name {0} has value {1}.", attribute.Name, attribute.Value );
                        }
        }   
    }

}


Men ja en windows app og med et xmldocument
Avatar billede aaberg Nybegynder
24. juni 2008 - 23:16 #3
Hvis dit program skal være et console program, kan du jo specificere filnavnet idet du starter programmet (f.eks. ved at skrive "Sample.exe c:\s2.xml" i konsollen). Da vil filnavnet komme ind som et argument til Main() metoden:

static void Main(string[] args)
        {
            if (args.Length == 1)
            {
                string filename = args[0];

                int i = 65;
                char c = (char)i;
                XmlDocument xmlDocument = new XmlDocument();

                xmlDocument.Load(filename);
                foreach (XmlElement LogEvent in xmlDocument.SelectNodes(@"Events/LogEvent"))
                {

                    Console.WriteLine(LogEvent.GetAttribute("Action"));
                    Console.WriteLine(c);
                    foreach (XmlAttribute attribute in LogEvent.Attributes)
                    {
                        Console.WriteLine("attribute with name {0} has value {1}.", attribute.Name, attribute.Value);
                    }
                }
            }
            else
            {
                Console.WriteLine("no xml file was specified!");
            }
               
        }
Avatar billede aaberg Nybegynder
24. juni 2008 - 23:20 #4
For at debugge ovenstående, kan du højreklikke på projektet i Visual Studio og vælge properties. Dette vil åbne et vindue, hvor du vælger debug tabben. Her er der en tekstboks med titlen "Command line arguments". I denne tekstboks kan du skrive dine argumenter for at det skal virke imens du debugger.
Avatar billede aaberg Nybegynder
24. juni 2008 - 23:22 #5
Hvis du i stedet for en Console application laver en Windows Application med en form, kan du benytte dig af Frameworkets standard OpenFileDialog dialog.
Avatar billede daywalker123 Nybegynder
28. juni 2008 - 01:17 #6
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void openFileDialog1_FileOk( object sender, CancelEventArgs e )
        {

        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            Stream myStream = null;
            OpenFileDialog openFileDialog1_FileOk = new OpenFileDialog();

            openFileDialog1_FileOk.InitialDirectory = "c:\\";
            openFileDialog1_FileOk.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog1_FileOk.FilterIndex = 2;
            openFileDialog1_FileOk.RestoreDirectory = true;

            if (openFileDialog1_FileOk.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if ((myStream = openFileDialog1_FileOk.OpenFile()) != null)
                    {
                        using (myStream)
                        {
                            // Insert code to read the stream here.
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }
            }
        }

    }
}
Avatar billede daywalker123 Nybegynder
28. juni 2008 - 01:17 #7
Det er min form nu - så ska jeg bare have den til at skrive dataerne rigtigt ud fra den fil man vælger, som så ska være en xml fil istedet for en txt fil..
Avatar billede daywalker123 Nybegynder
28. juni 2008 - 14:57 #8
Har oprettet et nyt spørgsmål
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