【问题标题】:Split String on tags into multiple Textboxes将标签上的字符串拆分为多个文本框
【发布时间】:2012-01-16 15:12:23
【问题描述】:

我不再纠结在哪里寻找解决方案。

我有一个字符串,其中包含标签"< p >" 和“”,以及用于标题的“”和“”,以及用于链接。字符串通过 app.current 传递到第二页,当我将其设置为文本块的源时,我看到了整个字符串。

现在我的问题: 我想在每个“”上创建一个新的 TextBlock,其中包含“”之前的文本。标题相同,因为我想以不同的方式设置它们。我想在列表中看到的链接。

我尝试了几件事,但没有找到可行的解决方案。我最后一次尝试是使用这个http://www.eugenedotnet.com/2011/04/binding-text-containing-tags-to-textblock-inlines-using-attached-property-in-silverlight-for-windows-phone-7/。我无法根据需要更改此设置。

我想从我的字符串中创建子字符串,并为每个子字符串使用/或新的 TextBlock 进行新的运行。没弄明白。

对此我真的没有任何想法。有人知道吗?

【问题讨论】:

  • 你可以使用 WebBrowser 控件吗?
  • 我将字符串从一个页面传递到另一个页面,并希望避免另一个我们要求应用程序性能...
  • 好的,我可以使用 String.Split 和 Regex 的组合来拆分文本。

标签: string windows-phone-7 textblock


【解决方案1】:

我建议使用HtmlAgilityPack 来解析 HTML。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(yourString);

string header = doc.DocumentNode.SelectSingleNode("h1").InnerText;

List<string> paragraphs = doc.DocumentNode.SelectNodes("p")
    .Select(p => p.InnerText).ToList();

获取适用于 WP7 的 HtmlAgilityPack 的最简单方法是安装 NuGet,右键单击您的 References 并选择“管理 NuGet 包”,然后在“在线”中搜索 HtmlAgilityPack

【讨论】:

  • 嗨,我设法安装了这个包。 HtmlAgilityPack 不重新识别 SelectSingleNode 和 SelectNodes。我手动添加了 94773 版本中包含的引用,但它说我缺少引用或 using 语句。我错过了什么?
  • @MSicc - Select* 方法在 HtmlDocument.DocumentNode 上,而不是在 HtmlDocument 本身上。我已经更新了代码。您应该能够恢复到 NuGet 版本。
  • 好的,现在可以了。谢谢你清理。我现在尝试将列表段落的所有条目转换为文本块,但在这种状态下我不能使用 foreach。我现在该如何转换?
  • 好的,我导航到我的第二页,我在每个 Listcreation 上都会遇到一个我无法解决的 NullArgumentException
  • @MSicc - 我认为我们可能已经超出了原始问题的范围,但我们会看看我们能做些什么。调试时,抛出NullReferenceException 的确切行是什么?
【解决方案2】:

为了稍微扩展 Richard Szalay 的回答,NuGet 上的 HTML 敏捷包版本似乎不包括添加的 WP7 特定实现。在this question 中有一个HAPPhone 版本的参考,可以从HTML AGility Pack project page 下载,并且在手机上运行良好。

不幸的是,您必须下载源代码并自行构建/手动添加参考。我猜 NuGet 版本会及时更新,但是当我上周这样做时,这是唯一的方法。

【讨论】:

  • NuGet 包实际上确实包含sl3-wpsl4-windowsphone71,因此绝对支持WP7。
  • 也许我弄错了版本。感谢您的澄清。 :)
  • 感谢您的建议。但似乎 nuget 包不包括它。或者我只是缺少一个参考/使用声明......将不得不深入研究
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 2020-01-29
  • 2011-06-14
  • 2012-10-25
  • 1970-01-01
相关资源
最近更新 更多