以下内容可能有什么问题:
<Run FontWeight=\"Bold\" Foreground=\"#FF0000FF\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xml:space=\"preserve\"><Run.TextDecorations><TextDecoration Location=\"Underline\" /></Run.TextDecorations>046/98 5802007513 \r</Run>
虽然XamlReader.Load可以很好地加载类似的其他内容,但是会引发以下异常:
“类型的第一次机会例外 'System.Windows.Markup.XamlParseException'发生在 PresentationFramework.dll
其他信息:给定编码中的字符无效。线 1,位置233。“
复制问题的代码:
using System;
using System.IO;
using System.Text;
using System.Windows.Markup;
namespace XamlTesting
{
class Program
{
static void Main(string[] args)
{
String str = "<Run FontWeight=\"Bold\" Foreground=\"#FF0000FF\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xml:space=\"preserve\"><Run.TextDecorations><TextDecoration Location=\"Underline\" /></Run.TextDecorations>046/98 5802007513 \r</Run>";
Stream s = new MemoryStream(ASCIIEncoding.Default.GetBytes(str));
try
{
var temp = XamlReader.Load(s);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}
答案 0 :(得分:0)
调用XamlReader.Parse而不是XamlReader.Load不会抛出异常&#34; XamlParseException&#34;同样的输入,但我不知道它的区别和工作方式。
static void Main(string[] args)
{
String str = "<Run FontWeight=\"Bold\" Foreground=\"#FF0000FF\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xml:space=\"preserve\"><Run.TextDecorations><TextDecoration Location=\"Underline\" /></Run.TextDecorations>046/98 5802007513 \r</Run>";
try
{
var temp = XamlReader.Parse(str);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
答案 1 :(得分:-1)
使用“(双引号)代替\,如下所示
String str = @“http://schemas.microsoft.com/winfx/2006/xaml/presentation”“xml:space =”“preserve”“&gt; 046/98 5802007513 \ r”;