【发布时间】:2017-01-16 15:52:57
【问题描述】:
我需要从 html 中获取所有节点,然后从该节点中获取文本和子节点,以及相同的内容,但从该子子节点获取。 例如,我有这个 HTML:
<p>This <b>is a <a href="">Link</a></b> with <b>bold</b></p>
所以我需要一种方法来获取 p 节点,然后是非格式化文本(this)、唯一粗体文本(is a)、粗体链接 (Link) 以及其他格式化和非格式化文本。
我知道使用 htmldocument 我可以选择所有节点和子节点,但是,如何获取子节点之前的文本,然后是子节点及其文本/子节点,以便我可以制作html 的渲染版本(“This is a Link with bold”)?
请注意,上面的例子是一个简单的例子。 HTML 将包含更复杂的内容,例如列表、框架、编号列表、三重格式文本等。还要注意,渲染的内容不是问题。我已经这样做了,但以另一种方式。我需要的是仅获取节点及其内容的部分。 另外,我不能忽略任何节点,所以我不能一无所有。并且主节点可以以p、div、frame、ul等开头。
【问题讨论】:
-
你看到这个question了吗?
-
如果您谈论 Hasan 的评论,是的,我尝试了一个将 HTML 转换为 XAML 的存储库,但遗憾的是我的应用程序不是那么基本。例如,如果有一个带有X类的div,我需要显示一个图像,或者如果在href中有一个具有特定域的,我需要在点击时调用一些函数。
-
如评论中所述,没有开箱即用的解决方案。您需要构建自己的解析器,它会根据 HTML 标记手动完成所有工作。接近您要求的另一件事是ScrollableHTMLView
-
我知道没有像“htmldoc.toxaml();”这样的简单方法,但我要求的是节点列表,但包括未格式化的部分。我的意思是:您可以获取主/根节点及其子节点,然后从该子节点中获取其子节点并继续。但是,如果我是正确的,那孩子只是格式化的节点(粗体、a、ul 等)。同样,我不是要求 2 行解决方案,而是要求使用 htmldocument/htmlagilitypack 改进我的实际(2300 行但有很多解释错误)代码的最佳方法
-
您可以通过查找“#text”节点来获取任何节点之前的文本。在您的示例中,它将是
<p><#text><b><#text><a><#text>类似的东西。如果您仍然无法弄清楚,请告诉我
标签: c# html uwp html-agility-pack