Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von IchAJ
Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

Hallo,

zum Abschluss: Habe eine neue Routine erstellt die mit XML Reader arbeitet.
Funktioniert schneller und sicherer.

Danke für die Hilfe.

Gruß Achim

Noch eine Frage: wie kann ich das Thema schließen?

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

Hallo,

brrr, langsam, erstmal mein Hintergrund:

Bin Problemorientierter SW Bastler, d.h. wenn ein Problem da ist setz ich mich hin und versuche das zu lösen. Dann ist wieder nix mehr mit Programmieren, was zur folge hat das ich immer wieder bei " wie ging die foreach schleife nochmal?" anfange.

Jetzt die Frage : Deserialisierung? interpretiere ich das richtig, wenn ich annehme das da das XML Konstruckt in einen Text umgewandelt werden kann und ich mit den ganzen String Methoden arbeiten kann?

Wäre meinem Level entgegenkommend.

aber mal noch ne frage: für die XpathDokument Klasse hab ich nur Konstruktoren gefunden, meine mich dunkel an Destruktoren zu erinnern die halt eine erstellte Instanz der Klasse wieder eliminieren.

Gibt so was für die Klasse?

Danke

P.S. Alles nur noch wegen des Lernens, hab angefangen einen XML Parser zu bauen.

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

Hallo Clarasoft,

Bei den XML Daten handelt es sich um Prüfprotokolle eines AOI Systems.
Die können sich in den Values der Attribute unterscheiden (Anzahl der Kommastellen) aber vom Strukturellen Aufbau sind die alle gleich.
Den Eintrag Displacement gibt es sicher bei jedem gesuchtem Bauteil.
deswegen auch keine Abfrage ob der Eintrag überhaupt vorhanden ist.

Danke

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

OK,

Danke, auch wenn das ganze für mich nach Bug ausschaut denn wenn ich weniger wie 14 XML Dateien im Ordner habe klappt es wunderbar.

Werde das ganze wenn es eine Dauerhafte Anforderung des Kunden wird so realisieren wie Du es vorgeschlagen hast.

Gru? Achim

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

Hallo,

Danke für die Antwort, nur zu meinem Verständnis, wenn ich mehr wie ca.:14 von den XML Files im Ordner habe kann die Verschachtelung der Do While Schleifen den Effekt haben das eine der schleifen n nicht mehr hochzählt?

Danke

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien


namespace XML
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string endung;
        //public var xPathDoc =  XPathDocument();
        public class Element
        {
            public string Barcode { get; set; }
            public string Board { get; set; }
            public string Bez { get; set; }
            public string VersatzX { get; set; }
            public string VersatzY { get; set; }
        }
        public List<Element> XMLS = new List<Element>();
        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = "Desktop";
            // openFileDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*|xml files (*.xml)";
            openFileDialog1.FilterIndex = 2;
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                
                string pfad = openFileDialog1.FileName.ToString();
                if (pfad != "")
                {
                    try
                    {
                       endung = Path.GetExtension(pfad);
                       string Dateiname = Path.GetFileName(pfad);
                        //LbSAP.Text = Dateiname;
                    }
                    catch
                    {
                        MessageBox.Show("Falsches Dateiformat!");
                        return;
                    }
                    
                    if (endung == ".xml")
                    {
                        var dioden = new string[] { "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "U10", "U11" };
                        foreach (var d in dioden)
                        {
                            xmleinlesen(pfad, d);
                            int count = 0;
                            foreach (var vs in XMLS)
                            {
                                string ausgabe = XMLS[count].Barcode + ", Board Nr: " + XMLS[count].Board + ", " + XMLS[count].Bez + ", x: " + XMLS[count].VersatzX + "µm, y: " + XMLS[count].VersatzY + "µm\n";
                                //libo1.Items.Add(ausgabe);
                                var output_txt = Path.GetFileNameWithoutExtension(pfad) + ".txt";
                                File.AppendAllText(output_txt, ausgabe);
                                count++;
                            }
                        }
                    }
                }
                textBox1.Text = pfad;
            }
            //int count = 0;
            //foreach (var vs in XMLS)
            //{
            //    string ausgabe = XMLS[count].Barcode +" |Board Nr:"+ XMLS[count].Board + " " + XMLS[count].Bez + " " + XMLS[count].VersatzX + "µm " + XMLS[count].VersatzY + "µm ";
            //    libo1.Items.Add(ausgabe);
            //    count++;
            //}
        }

        private void xmleinlesen(string pfad, string diode)
        {
            
            string datname = Path.GetFileNameWithoutExtension(pfad);
            XMLS=readXml(pfad, diode);
        }

        private static List<Element> readXml(string pfad, string diode)
        {
            List<Element> data = new List<Element>();

           var xPathDoc = new XPathDocument(pfad);
            XPathNavigator navigator = xPathDoc.CreateNavigator();

            navigator.MoveToRoot();
            while (navigator.MoveToFollowing("VvExtDataExportXml", ""))
            {
                navigator.MoveToChild("DataModel", "");
                var BC = navigator.GetAttribute("Barcode","");
                navigator.MoveToChild("Object", "");
                //while( navigator.MoveToFollowing("DataModel", ""))
                // {
                int n = 0;
                var Board1 = "";
                do
                {
                    
                    if (navigator.GetAttribute("Class","")=="Board")
                    {
                        Board1 = navigator.GetAttribute("Name", "");
                    }
                    if (navigator.GetAttribute("Name","")==diode)
                      {
                        
                        n++;

                            navigator.MoveToChild("Features", "");
                        navigator.MoveToChild("Feature", "");
                        do
                        {
                            navigator.MoveToNext();
                            //navigator.MoveToFollowing("Feature", "");
                            var text = navigator.GetAttribute("Name", "");
                            if (text == "Displacement")
                            {
                                navigator.MoveToChild("Values", "");
                                navigator.MoveToChild("Value", "");
                                var text1  = navigator.GetAttribute("Name","");
                                var disx = navigator.GetAttribute("Value", "");
                                navigator.MoveToNext();
                                var text2 = navigator.GetAttribute("Name", "");
                                var disy = navigator.GetAttribute("Value", "");

                                data.Add(new Element { Barcode = (ulong.Parse(BC) + ulong.Parse(Board1) - 1).ToString(),Board = Board1, Bez = diode, VersatzX = disx, VersatzY = disy });
                             
                                break;
                            }





                        } while (n<11);


                    }
                     navigator.MoveToFollowing("Object", "");
                } while (n<10);



               
                
               
                
                
                

            }
            
            return data;
          
        }

        private void button2_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.RootFolder = Environment.SpecialFolder.MyComputer;
            fbd.ShowNewFolderButton = true;
            DialogResult result = fbd.ShowDialog();

            if (result == DialogResult.OK)
            {

                string pfad = fbd.SelectedPath;
                if (pfad != "")


                    
                    
                   
                {
                    int anzahl = CountFiles(pfad);
                    textBox2.Text = anzahl.ToString();

                    var dir_info_in = new DirectoryInfo(pfad);
                    foreach (var datei in dir_info_in.GetFiles("*.xml"))
                    {
                            libo1.Items.Add(datei);
                            string output_txt = "output.csv";
                            var dioden = new string[] { "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "U10", "U11" };
                            foreach (var d in dioden)
                            {
                                xmleinlesen(datei.FullName, d);
                                int count = 0;
                                foreach (var vs in XMLS)
                                {
                                //string ausgabe = XMLS[count].Barcode + ", Board Nr: " + XMLS[count].Board + ", " + XMLS[count].Bez + ", x: " + XMLS[count].VersatzX + "µm, y: " + XMLS[count].VersatzY + "µm\n";
                                string ausgabe = XMLS[count].Barcode + ", " + XMLS[count].Bez + ", x: " + XMLS[count].VersatzX + "µm, y: " + XMLS[count].VersatzY + "µm\n";
                                //libo1.Items.Add(ausgabe);
                                    File.AppendAllText(output_txt, ausgabe);
                                    count++;
                                textBox3.Text = count.ToString();
                                }
                            }
                        }
                }
                textBox1.Text = pfad;
            }
        }
    private static int CountFiles(string path)
    {
        DirectoryInfo di = new DirectoryInfo(path);
        return di.GetFiles("*.xml").Length;
    }
}
}


Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

ja hab ich nicht einstellen können da ich in Kurzarbeit war und der Code sich auf der Arbeit befand.


 private void xmleinlesen(string pfad, string diode)
        {
            
            string datname = Path.GetFileNameWithoutExtension(pfad);
            XMLS=readXml(pfad, diode);
        }

        private static List<Element> readXml(string pfad, string diode)
        {
            List<Element> data = new List<Element>();

           var xPathDoc = new XPathDocument(pfad);
            XPathNavigator navigator = xPathDoc.CreateNavigator();

            navigator.MoveToRoot();
            while (navigator.MoveToFollowing("VvExtDataExportXml", ""))
            {
                navigator.MoveToChild("DataModel", "");
                var BC = navigator.GetAttribute("Barcode","");
                navigator.MoveToChild("Object", "");
                //while( navigator.MoveToFollowing("DataModel", ""))
                // {
                int n = 0;
                var Board1 = "";
                do
                {
                    
                    if (navigator.GetAttribute("Class","")=="Board")
                    {
                        Board1 = navigator.GetAttribute("Name", "");
                    }
                    if (navigator.GetAttribute("Name","")==diode)
                      {
                        
                        n++;

                            navigator.MoveToChild("Features", "");
                        navigator.MoveToChild("Feature", "");
                        do
                        {
                            navigator.MoveToNext();
                            //navigator.MoveToFollowing("Feature", "");
                            var text = navigator.GetAttribute("Name", "");
                            if (text == "Displacement")
                            {
                                navigator.MoveToChild("Values", "");
                                navigator.MoveToChild("Value", "");
                                var text1  = navigator.GetAttribute("Name","");
                                var disx = navigator.GetAttribute("Value", "");
                                navigator.MoveToNext();
                                var text2 = navigator.GetAttribute("Name", "");
                                var disy = navigator.GetAttribute("Value", "");

                                data.Add(new Element { Barcode = (ulong.Parse(BC) + ulong.Parse(Board1) - 1).ToString(),Board = Board1, Bez = diode, VersatzX = disx, VersatzY = disy });
                             
                                break;
                            }





                        } while (n<11);


                    }
                     navigator.MoveToFollowing("Object", "");
                } while (n<10);



               
                
               
                
                
                

            }
            
            return data;
          
        }

        private void button2_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            fbd.RootFolder = Environment.SpecialFolder.MyComputer;
            fbd.ShowNewFolderButton = true;
            DialogResult result = fbd.ShowDialog();

            if (result == DialogResult.OK)
            {

                string pfad = fbd.SelectedPath;
                if (pfad != "")


                    
                    
                   
                {
                    int anzahl = CountFiles(pfad);
                    textBox2.Text = anzahl.ToString();

                    var dir_info_in = new DirectoryInfo(pfad);
                    foreach (var datei in dir_info_in.GetFiles("*.xml"))
                    {
                            libo1.Items.Add(datei);
                            string output_txt = "output.csv";
                            var dioden = new string[] { "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9", "U10", "U11" };
                            foreach (var d in dioden)
                            {
                                xmleinlesen(datei.FullName, d);
                                int count = 0;
                                foreach (var vs in XMLS)
                                {
                                //string ausgabe = XMLS[count].Barcode + ", Board Nr: " + XMLS[count].Board + ", " + XMLS[count].Bez + ", x: " + XMLS[count].VersatzX + "µm, y: " + XMLS[count].VersatzY + "µm\n";
                                string ausgabe = XMLS[count].Barcode + ", " + XMLS[count].Bez + ", x: " + XMLS[count].VersatzX + "µm, y: " + XMLS[count].VersatzY + "µm\n";
                                //libo1.Items.Add(ausgabe);
                                    File.AppendAllText(output_txt, ausgabe);
                                    count++;
                                textBox3.Text = count.ToString();
                                }
                            }
                        }
                }
                textBox1.Text = pfad;
            }
        }
    private static int CountFiles(string path)
    {
        DirectoryInfo di = new DirectoryInfo(path);
        return di.GetFiles("*.xml").Length;
    }
}
}

Ist für Informatiker evtl. grausam anzuschauen aber ich hab's halt nicht anders gelernt.

Danke

Thema: [gelöst] Aus mehrere XML Dateien Daten extrahieren
Am im Forum: Datentechnologien

Hallo,

folgende Situation:
in einem Ordner sind mehrere XML Files (>20Stück, Größe ca.: 6MB) aus diesen muss ich verschiedene Werte extrahieren.
Das habe ich über xpathDocument und Xpathnavigator versucht zu realisieren.
Grundsätzlich funktioniert es bei bis zu 14 Dateien im Ordner. Bei mehr hängt sich das Programm im Navigieren im XML File auf.
Frage: nachdem die xml Files ja immer als neue Instanz des xpathDocuments geladen werden ( jedenfalls bei mir im Code) läuft mir da der Speicher voll oder was könnte dieses Phänomen verursachen?

Danke

Gruß



Verwendetes Datenbanksystem: <bitte immer angeben>