Benutzer mit den meisten Antworten
Lesen einer Xml-Datei aus dem IsolatedStorage

Frage
-
Hallo!
Ich möchte eine Xml-Datei parsen, die im IsolatedStorage meiner App liegt:
// Speicherplatz der App IsolatedStorageFile appStorage = IsolatedStorageFile.GetUserStoreForApplication(); // Wenn Datei vorhanden ist: laden if (appStorage.FileExists(fileName)) { // Stream der Datei IsolatedStorageFileStream file = appStorage.OpenFile(fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read); // XML-Einstellungen XmlReaderSettings xmlSettings = new XmlReaderSettings(); xmlSettings.IgnoreWhitespace = true; xmlSettings.IgnoreComments = true; // XML-Parser XmlReader xmlReader = XmlReader.Create(file, xmlSettings); // Parsen xmlReader.MoveToContent(); while (xmlReader.Read()) {
Jedoch tritt beim Aufruf von
xmlReader.MoveToContent();
oder von .Read(), wenn ich MoveToContent() auskommentiere, eine "NotSupportedException" auf.
Was mache ich falsch? Gehe ich das richtig an, oder gibt es eine andere (geschicktere) Methode?
Viele Grüße
Antworten
-
Hallo, deine Fileexists abfrage schaut nur, ob das file vorhanden ist.
Was denkst du passiert, wenn das file leer ist?
Wie hast du das file denn davor angelegt?
Ist es XML conform?
Stichwort:
<?xml version="1.0" encoding="utf-8" ?>
<DeinXMLContent>
<Asset Type="System.String">
<Node>Hier steht ein String</Node>
</Asset>
</DeinXMLContent>- Als Antwort markiert Aiakos Donnerstag, 10. März 2011 12:49
-
Hi,
die Fehlermeldung "Der Typ- oder Namespacename "Linq" ist im Namespace "System.Xml" nicht vorhanden. (Fehlt ein Assemblyverweis?)" deutet darauf hin, dass du die Assembly mit dem Namen "System.Xml.Linq.dll" dem Projekt nicht hinzugefügt hast.
Siehst du im Projektmappen-Explorer unterhalb deines Projekts in der Gruppierung "Verweise" den Verweis "System.Xml.Linq"? Wenn nicht füge diesen bitte hinzu.
Gruß
Rudolf
- Als Antwort vorgeschlagen WP7_Dev Donnerstag, 10. März 2011 11:17
- Als Antwort markiert Robert Breitenhofer Donnerstag, 10. März 2011 14:01
-
Hallo Aiakos,
>>Eine Frage bleibt jedoch dann doch noch: Warum kann ich keine Objekte der Klasse XmlTextReader erzeugen? Der Namespace in dem die Klasse definiert ist (System.Xml), ist ja eingebunden?!
bei der Windows Phone Entwicklung benutzt Du die eingeschränkte Version (für Silverlight) des Namespace System.Xml, da gibt es die Klasse XmlTextReader nicht.
http://msdn.microsoft.com/en-us/library/system.xml(v=VS.95).aspx
Schöne Grüße
Oliver
- Als Antwort markiert Robert Breitenhofer Donnerstag, 10. März 2011 15:35
Alle Antworten
-
Hi Aiakos,
guck dir mal das Beispiel an: http://www.roque-patrick.com/windows/final/bbl0194.html
Gruß
Rudolf
-
Auf ein ähnliches Beispiel war ich auch bereits gestoßen, doch Visual Studio findet die Klasse (System.Xml.)XmlTextReader nicht:
Fehler 1 Der Typ- oder Namespacename "XmlTextReader" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?) Fehler 2 Der Name "XmlTextReader" ist im aktuellen Kontext nicht vorhanden.
Ebenso fand ich ein Beispiel, das die Klasse XDocument nutzt, welche bei mir aber ebenfalls nicht verfügbar zu sein scheint. -
Hast du eine Verweis auf System.Xml und System.Xml.Linq?
Schau mal hier:
http://msdn.microsoft.com/de-de/library/system.xml.linq.xdocument(v=vs.95).aspx -
Im MSDN hab ich natürlich bereits nachgeschlagen und der Verweis auf System.Xml existiert selbstverständlich auch (deshalb hab ich den Namespace oben in Klammern vor die Klasse geschrieben und die Klasse XmlReader wird ja auch gefunden). System.Xml.Linq jedoch kann ich nicht einbinden, da nicht vorhanden:
Fehler 1 Der Typ- oder Namespacename "Linq" ist im Namespace "System.Xml" nicht vorhanden. (Fehlt ein Assemblyverweis?)
Bereits eingebunden ist stattdessen System.Linq, das nutzt in dem Fall aber auch nichts.
Da ich sowieso vor hatte den Xml(Text)Reader zu verwenden ist das auch nicht weiter schlimm, wobei natürlich beide Fehler (fehlender XmlTextReader und fehlendes .Linq / XDocument) die gleiche Ursache haben könnten. Entweder mache ich etwas grundlegendes falsch, oder mit dem Stand meines Frameworks stimmt etwas nicht. Ein Hinweis könnte sein "Fehlt ein Assemblyverweis?", doch das hilft mir im Moment auch nicht weiter.
-
Hallo, deine Fileexists abfrage schaut nur, ob das file vorhanden ist.
Was denkst du passiert, wenn das file leer ist?
Wie hast du das file denn davor angelegt?
Ist es XML conform?
Stichwort:
<?xml version="1.0" encoding="utf-8" ?>
<DeinXMLContent>
<Asset Type="System.String">
<Node>Hier steht ein String</Node>
</Asset>
</DeinXMLContent>- Als Antwort markiert Aiakos Donnerstag, 10. März 2011 12:49
-
Hi,
die Fehlermeldung "Der Typ- oder Namespacename "Linq" ist im Namespace "System.Xml" nicht vorhanden. (Fehlt ein Assemblyverweis?)" deutet darauf hin, dass du die Assembly mit dem Namen "System.Xml.Linq.dll" dem Projekt nicht hinzugefügt hast.
Siehst du im Projektmappen-Explorer unterhalb deines Projekts in der Gruppierung "Verweise" den Verweis "System.Xml.Linq"? Wenn nicht füge diesen bitte hinzu.
Gruß
Rudolf
- Als Antwort vorgeschlagen WP7_Dev Donnerstag, 10. März 2011 11:17
- Als Antwort markiert Robert Breitenhofer Donnerstag, 10. März 2011 14:01
-
Die Datei ist zwar nicht leer, aber (noch) nicht xml-konform (im Moment eine Html-Seite). Das sollte ja insofern noch nichts machen, als das die Klasse XmlTextReader noch garnicht erkannt wird.
Gibt der XmlReader die NotSupportedException zurück, wenn die Datei nicht xml-konform ist? Das würde dann natürlich einiges erklären.
-
So, ich hab's ausprobiert und tatsächlich: Mit einem konformen Xml-Dokument funktioniert auch mein obiger Code einwandfrei. Da hab ich mir ja ein schönes Ei gelegt.. Danke jedenfalls für die Tipps und die Geduld mit mir!
Eine Frage bleibt jedoch dann doch noch: Warum kann ich keine Objekte der Klasse XmlTextReader erzeugen? Der Namespace in dem die Klasse definiert ist (System.Xml), ist ja eingebunden?!
-
Hallo Aiakos,
>>Eine Frage bleibt jedoch dann doch noch: Warum kann ich keine Objekte der Klasse XmlTextReader erzeugen? Der Namespace in dem die Klasse definiert ist (System.Xml), ist ja eingebunden?!
bei der Windows Phone Entwicklung benutzt Du die eingeschränkte Version (für Silverlight) des Namespace System.Xml, da gibt es die Klasse XmlTextReader nicht.
http://msdn.microsoft.com/en-us/library/system.xml(v=VS.95).aspx
Schöne Grüße
Oliver
- Als Antwort markiert Robert Breitenhofer Donnerstag, 10. März 2011 15:35