Autor Beitrag
shacknet
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 05.09.08 11:05 
Hallo Community,

Zurzeit entickle ich ein Projekt, welches folgendes bewerkstelligen soll:

Ich übergebe einer Funktion verschiedene Parameter. Diese Parameter sind zum Beispiel:

  • Name
  • Typ
  • Content

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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
String sXAML = xamlStringBuilder(); // bringt als return Wert den fertigen String
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 05.09.08 12:01 
Oh mist, habe ich den String vergessen...>.<
Sorry.
Hier der String:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 05.09.08 12:27 
user profile iconshacknet 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 05.09.08 13:36 
user profile iconKha hat folgendes geschrieben:
user profile iconshacknet 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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
Hält's aus hier
Beiträge: 16

Vista
XAML, C#
BeitragVerfasst: Mo 06.10.08 17:24 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
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.