24. juni 2008 - 22:49Der 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?
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).
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 ); } } }
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:
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!"); }
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.
Hvis du i stedet for en Console application laver en Windows Application med en form, kan du benytte dig af Frameworkets standard OpenFileDialog dialog.
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 ) {
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..
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.