Entwickler-Ecke
WPF / Silverlight - XAML aus Stream lesen und verarbeiten
shacknet - Fr 05.09.08 11:05
Titel: XAML aus Stream lesen und verarbeiten
Hallo Community,
Zurzeit entickle ich ein Projekt, welches folgendes bewerkstelligen soll:
Ich übergebe einer Funktion verschiedene Parameter. Diese Parameter sind zum Beispiel:
Soweit so gut. Mein Programm ersetllt auch schon einen funktionierenden XAML String daraus.
Wenn ich ihn aber verarbeiten will kommt eine Fehlermeldung, die wie folgt lautet:
"Ein Name darf nicht mit dem Zeichen '.', hexadezimaler Wert 0x00, beginnen.
Zeile 1, Position 2"
Folgender Code wird verwendet:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| String sXAML = xamlStringBuilder(); MemoryStream memstream = new MemoryStream(); byte[] data = Encoding.Unicode.GetBytes(sXAML); memStream.Write(data, 0, data.Length); memStream.Position = 0;
try { StreamReader sReader = new StreamReader(memStream); DependenyObject doRoot = XamlReader.Load(sReader.Basestream) as DependencyObject; this.Content = doRoot; } cat[.........] |
Wo liegt da der Fehler, dass mir eine solch geheimnisvolle Fehlermeldung entegegn kommt?^^
Hoffe mir kann da wer helfen.
MfG
shacknet
Kha - Fr 05.09.08 11:40
Ich weiß beim besten Willen nicht, wie wir dir helfen sollen, wenn wir den XAML-String nicht kennen :| .
Mich würde aber interessieren, was du eigentlich vorhast. Brauchst du wirklich einen XamlReader?
shacknet - Fr 05.09.08 12:01
Oh mist, habe ich den String vergessen...>.<
Sorry.
Hier der String:
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="memStream" Height="300" Width="300"> <Grid> <Button Margin="0,0,32,36" Name="button" Height="61" HorizontalAlignment="Right" VerticalAlignment="Bottom" Width="97">Button</Button> </Grid> </Page> |
Diese String ist eine eine Kette Reduziert. Und die "(Anführungszeichen) wurden mit "\" escaped
Ich möchte eine art Engine basteln. Aus einer Datenbank werden Datensätze ausgelesen. (s. ganz o.)
Diese werden mit meinem Programm in einen XAML string konvertiert (s.o.) Nun soll dies ausgegeben werden.
Und das mit xaml wäre gut, da ich, wenn ich es über c# machen würde zu größ würde.
Hinterher wird bei einer Textbox dann nur noch das "<Textbox Name="a".../>" ausgegeben. Das alles in eine XAML-Page zusammengebastelt und dann ab die post. :lol:
Hoffe du verstehst mich. Wenn nicht, frag^^ -|- danke
LG
shacknet
Kha - Fr 05.09.08 12:27
Titel: Re: XAML aus Stream lesen und verarbeiten
shacknet hat folgendes geschrieben: |
"Ein Name darf nicht mit dem Zeichen '.', hexadezimaler Wert 0x00, beginnen. |
Ich sehe erst jetzt, dass das gar kein Punkt ist :lol: .
Du benutzt UTF-16 als Encoding, der XmlReader kann ohne BOM aber nur raten und wählt UTF-8 - peng!
Übergib dem XamlReader statt einem Stream lieber
XmlReader.Create(new StringReader(...)), dann sollte das Encoding passen.
shacknet - Fr 05.09.08 13:18
Hey, super danke.
Ich tüftel da lnage dran rum, und dann ist das nur sowas simples(eine Zeile Code)...
danke nochmal
shacknet
shacknet - Fr 05.09.08 13:36
Titel: Re: XAML aus Stream lesen und verarbeiten
Kha hat folgendes geschrieben: |
shacknet hat folgendes geschrieben: | "Ein Name darf nicht mit dem Zeichen '.', hexadezimaler Wert 0x00, beginnen. | Ich sehe erst jetzt, dass das gar kein Punkt ist :lol: .
Du benutzt UTF-16 als Encoding, der XmlReader kann ohne BOM aber nur raten und wählt UTF-8 - peng!
Übergib dem XamlReader statt einem Stream lieber XmlReader.Create(new StringReader(...)), dann sollte das Encoding passen. |
Habe da doch ne frage. Was sollte das '.' gewehsen sein, wenn kein Punkt? :?!?:
Kha - Fr 05.09.08 18:08
Das ist schon ein Punkt :mrgreen: . Aber schau mal dahinter: "hexadezimaler Wert 0x00". Der normale Punkt ist #46; #0 kann verschiedene Bedeutungen haben, ist aber auf jeden Fall ein unsichtbares Zeichen, deshalb können wir im XAML-Code auch lange suchen, wo da bitte ein Punkt an zweiter Stelle sein soll. Fies :D .
Edit: Ab 3.0 SP1 gibt es übrigens auch XamlReader.Parse(string) ;) .
jpkleinau - Mo 06.10.08 17:24
Kha hat folgendes geschrieben : |
Edit: Ab 3.0 SP1 gibt es übrigens auch XamlReader.Parse(string) ;) . |
Mir gruselt es ein wenig davor. Dabei geht IMHO ein wichtiger Punkt verloren: XAML ist XML. Manchmal bin ich ein Freund von Striktheit und Ordnung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!