当我意识到我需要为大约50个XHTML页面创建索引时,可能会在将来添加/删除/重命名/移动,我认为"没问题 - 我将使用LINQ to XML编写快速索引生成器,因为XHTML绝对算作XML".
当然,一旦我尝试运行它,我就发现了XLINQ在XHTML实体上窒息的事实,例如 .我使用以下算法解决了这个问题:
为了保存文件,我做了相反的事情:
我的问题是,是否有任何库(特别是内置的.Net)我可以使用它将XHTML文件读入XDocuments?我编写的代码已经完成了它的目的(生成当前索引并测试生成器程序的其余部分),如果其他人已经编写并测试了相同的东西,我真的不想花时间测试它.
非常感谢你们的时间,
Ria.
编辑:非常感谢你; 这个有效!当我保存XHTML时,我仍然需要进行一些小的字符串处理(猜测库并不是真的为此而做:)并且我不得不稍微调整Agility Pack的来源以使其停止不加选择地粘贴CDATA部分围绕每个样式属性的内部(即使已经存在一个),但这是开源的重点,对吧?
说我有一个IEnumerable.例如,{2,1,42,0,9,6,5,3,8}.
我需要获得与谓词匹配的项目的"运行".例如,如果我的谓词是
bool isSmallerThanSix(int number){...}
Run Code Online (Sandbox Code Playgroud)
我想获得以下输出:{{2,1},{0},{5,3}}
是否有内置功能可以实现这一目标?
到目前为止我有这个:
public static IEnumerable<IEnumerable<T>> GetSequences<T>(this IEnumerable<T> source,
Func<T, bool> selector) {
if (source == null || selector == null) {
yield break;
}
IEnumerable<T> rest = source.SkipWhile(obj => !selector(obj));
while (rest.Count() > 0) {
yield return rest.TakeWhile(obj => selector(obj));
rest = rest
.SkipWhile(obj => selector(obj))
.SkipWhile(obj => !selector(obj));
}
}
Run Code Online (Sandbox Code Playgroud)
这看起来很有效,但是我是在半夜写的,因此从星期二开始就效率低十五.是否有更好的,最好是内置(因此经过良好测试)的方式?
非常感谢你们的时间,
利雅.