[c#] Text aus Datei auslesen und Filtern

habe jetzt mal die unteren beiden Zeilen rausgenommen, das es quasi so aussieht:

Code:
public static void Suche()
        {
                XmlDocument xDoc = new XmlDocument();
                xDoc.LoadXml(@"C:\MyDir\Datei.resx");
        }


und der Debuger sagt mir

Code:
Data at the root level is invalid. Line 1, position 1.

Die ersten Zeilen meiner XML sehen so aus:

Code:
<?xml version='1.0' encoding='UTF-8'?>
<root>
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

Ist das vielleicht hilfreich? Oder soll ich mal die gesamte XML-Datei posten?

Mfg
Daniel
 
Die Brocken die du postest scheinen korrekt.
Am besten du packst die Datei mal in den Anhang, dann kann man mit deiner Datei mal debuggen.
So ist das eher ein Rätselraten.
 
So, hab den Code nochmal bearbeitet. Jetzt funktioniert es auch. Gott sei dank. ^^

Code:
        public static void Suche()
        {
            
            try
            {
                XmlDocument xDoc = new XmlDocument();
                XmlTextReader reader = new XmlTextReader(@"C:\datei.resx");

                xDoc.Load(reader);
                
                //XmlNodeList myNode = xDoc.SelectNodes("//value");

                 
            }
            catch (Exception)
            {
               Console.WriteLine("Error 1");
            }   
            

        }
Hatte das teilweise bei Google gefunden.
Kann mir jemand sagen was diese Zeile macht und ob ich sie nutzen kann um meine Werte auszulesen?

Code:
              XmlNodeList myNode = xDoc.SelectNodes("//value");

Danke für die Mithilfe.

Mfg
Blocker
 
Hi

Ja, kannst du.
Du kriegst hier eine Liste aller Tags (Nodes) geliefert, die den Namen value haben.

Ob es das ist, was du auch haben willst, kann ich dir aber nicht sagen, da ich deine Erwartung nicht kenne.
 
Also es ist teilweise das was ich haben möchte. Leider nimmt er, wenn ich diesen Code verwende:

Code:
        public static void Suche()
        {
            
            try
            {
                XmlDocument xDoc = new XmlDocument();
                XmlTextReader reader = new XmlTextReader(@"C:\datei.resx");
                
                xDoc.Load(reader);

                XmlNodeList translateNode = xDoc.SelectNodes("//value");
                             
                 for(int j=0; j<translateNode.Count; j++)
                {
                    Console.WriteLine(translateNode.Item(j).InnerText);
                }
         
                 
            }
            catch (Exception)
            {
               Console.WriteLine("Error 1");
            }   
            

        }

alle Werte aus Value. Was ja an sich auch richtig ist, aber leider gibt es in der RESX Datei noch andere Value Ebenen.

z.b. das hier
Code:
<value>2.0</value>

oder das:
Code:
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
Gibt es dafür vielleicht eine Art XPath-Filter mit dem ich das heraus bekomme?
Ich möchte ja nur den Inhalt von diesen Zeilen:
Code:
  <data name="DOWN" xml:space="preserve">
    <value>Fra</value>
Also quasi "DOWN" und "Fra". Aber ich finde einfach nicht mit denen ich das herausfiltern kann.Ich finde zwar einen Haufen Beispiele für die Filterung von Ebenen
(http://msdn.microsoft.com/de-de/library/ms256086(VS.80).aspx)
, aber leider nicht für dessen Inhalt.
Hast du dafür vielleicht noch ne Idee?

Mfg
Blocker
 
Hi

In den oben verlinkten Seiten wird in den Tutorials auch gezeigt, wie du den Filter auf Attribute setzen kannst bzw. die Ebene genauer spezifizierst ;)
 
Zurück