Hallo,
habe Probleme beim EInlesen von Inhalten einer XML-Datei:
Befindet sich in der XML-Datei kein Namespace, so funktioniert folgender C# Code einwandfrei.
Doch sobald ein Namespace eingefügt wird, wird die foreach-Schleife komplett uebersprungen. Das Problem ist, der Namespace in der XML-Datei keine Prefix hat. Im C# Code arbeite ich mit dem XMLNamespaceManager. Dabei ueberschreibe ich den Default-Namespace im XMLNamespaceManager. Nur leider werden meine Ausgaben nicht ausgeführt. Habe versucht, den xmlns-Namespace im XMLNamespaceManager zu überschreiben, nur leider ist das nicht möglich.
Wenn ich in meiner XML-Datei ein Namespace mit einem Präfix habe, und ein Tag dieses Präfix besitzt, werden die Ausgaben korrekt ausgeführt.
Das Problem ist, dass in meiner XML-Datei ein Namespace ohne Präfix vorhanden ist und somit der Standard-Namespace ueberschrieben wird. Kann ich den Standard-Namespace im XMLNamespaceManager irgendwie ändern?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| XmlDocument data = new XmlDocument(); data.Load(file);
XmlNamespaceManager ns = new XmlNamespaceManager(data.NameTable); ns.AddNamespace("", data.DocumentElement.NamespaceURI);
foreach (XmlNode node in data.SelectNodes("screen/channels/channel", ns)) { Console.WriteLine(node.Attributes["id"].Value); Console.WriteLine(node.SelectSingleNode("Author").InnerText.ToString()); } |
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <screen xmlns='http://www.st.de/' > <channels> <channel id='2207' serial='201103041435' > <description>Test1</description> </channel> <channel id='2201' serial='201103041435' > <description>Test2</description> </channel> <channel id='2202' serial='201103041405' > <description>Test3</description> </channel> </channels> </screen> |