从silverlight富文本框中提取纯文本-LINQ to XML
本文关键字:文本 -LINQ to XML 提取 silverlight | 更新日期: 2023-09-27 17:57:59
我正在尝试从SL 4富文本框的xaml内容中获取纯文本
内容如下:
<Section xml:space='"preserve'" HasTrailingParagraphBreakOnPaste='"False'" xmlns='"http://schemas.microsoft.com/winfx/2006/xaml/presentation'">
<Paragraph FontSize='"12'" FontFamily='"Arial'" Foreground='"#FF000000'" FontWeight='"Normal'" FontStyle='"Normal'" FontStretch='"Normal'" TextAlignment='"Left'">
<Run Text='"Biggy'" />
</Paragraph>
</Section>
当我尝试这个:
XElement root = XElement.Parse(xml);
var Paras = root.Descendants("Paragraph");
foreach (XElement para in Paras)
{
foreach (XElement run in Paras.Descendants("Run"))
{
XAttribute a = run.Attribute("Text");
text += null != a ? (string) a : "";
}
}
Paras是空的
我做错了什么
谢谢你的提示。。。
在选择元素时,您需要考虑XML中的命名空间,您可以使用XNamespace
来声明和使用它-这很有效:
XNamespace xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
var Paras = root.Descendants(xmlns + "Paragraph");
string StringFromRichTextBox(string XAML)
{
XElement root = XElement.Parse(XAML);
XNamespace xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation";
StringBuilder sb = new StringBuilder();
var Paras = root.Descendants(xmlns + "Paragraph");
foreach (XElement para in Paras)
{
foreach (XElement run in Paras.Descendants(xmlns + "Run"))
{
XAttribute a = run.Attribute("Text");
sb.Append(null != a ? (string)a : "");
}
}
return sb.ToString();
}
成功了!希望这对你有所帮助。Nguyen Minh Hien