我已经在.NET 4上写了一个项目,目前正在允许它在Windows上运行。我使用的是HtmlAgilityPack,这是一个众所周知的库,它允许在HTML上查询Linq,并且只使用它提供的LoadHtml和Linq接口。
在将类库从.NET 4转换为PCL (便携式类库)并支持.NET 4和WP8之后,我似乎不再使用HtmlAgilityPack库了。是否有一种允许HtmlAgilityPack在PCL项目下正确工作的方法,或者是否有一个具有类似Linq接口的变量可供选择,并按预期工作?
编辑:HtmlAgilityPack提供了9个不同的版本,其中没有一个与PCL兼容。它们中没有一个解析引用中的依赖项。对于某些版本,可能会出现这样的情况,但在使用时会抛出一个错误,通常的“无法加载,未解决的依赖项”。
编辑#2因为很容易错过一个小评论,我将用我想出的解决方案来更新这个答案。我提取了基本功能所需的内容,并实现了缺少的组件,以使一切正常工作。结果是在这里https://github.com/Deathspike/HtmlAgilityPack-PCL
发布于 2013-03-11 21:12:57
你已经问过并回答了你自己的问题-不是吗?
HtmlAgilityPack不支持与便携式类库一起使用。
充其量,您将需要查看移植/迁移所需的特定功能的方式,以便在您正在使用的平台上工作。
发布于 2013-03-12 00:19:58
一种选择是将HTML敏捷包源代码移植到PCL。您可以通过运行PCL符合性分析仪来了解这将有多难。
或者,使用抽象模式。为您需要的功能创建一个可移植的接口(即LoadHtml
和Linq
),然后通过调用HTML为每个平台实现该接口。然后,您的可移植代码可以依赖于特定于平台的实现。
有关更多信息,请参见以下博客文章:如何使便携式类库为您工作
发布于 2013-03-12 12:01:18
看看HtmlParserSharp,这是validator.nu HTML5解析器的一个C#端口。该项目应该非常容易构建为一个PCL库,因为它或多或少是一个直接的C++端口,并且只使用最基本的.NET框架类,并进行了一些更新以提高C#的性能。
虽然我在HtmlParserSharp中所做的大部分工作都是为CsQuery做的,而CsQuery本身离PCL兼容还有很长的路要走,但HtmlParserSharp作为一个精益的HTML解析器,完全没有理由让它自己工作得很好。该项目包括一个基于XmlElement
构建DOM的示例,但是树构建器是一个抽象,因此您可以轻松地将其更改为使用自己的树节点对象。
https://stackoverflow.com/questions/15341774
复制相似问题